【发布时间】:2011-02-02 05:30:04
【问题描述】:
在这种情况下 realloc 会失败吗?
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;
【问题讨论】:
-
这是stackoverflow.com/questions/1736433/… 的副本,但我认为这是一个更好的问题和答案。