int *a = NULL;
a = calloc(100, sizeof(*a));
printf("1.ptr: %d\n", a);
a = realloc(a, 50 * sizeof(*a));
printf("2.ptr: %d\n", a);
if(a == NULL){
printf("Is it possible?\n");
}
return (0);
在我的情况下,输出结果为:
1.ptr: 4072560
2.ptr: 4072560
所以'a'指向同一个地址。那我应该执行realloc检查吗?
后续编辑:
- 在Windows XP下使用MinGW编译器。
- 在Linux上,行为是否类似于gcc?
后续编辑2:这种检查方式可以吗?
int *a = NULL, *b = NULL;
a = calloc(100, sizeof(*a));
b = realloc(a, 50 * sizeof(*a));
if(b == NULL){
return a;
}
a = b;
return a;