满意答案
ujjet0819665
推荐于 2017.09.03
采纳率:57% 等级:11
已帮助:9100人
正常情况应当不变,但是:
(1)realloc重新分配内存大小时有可能搬动存储块的地址,如果你到老地址去查数值,有可能变了,要用变量名字去查数值。
(2)realloc重新分配内存大小时,如果是减少存储单元(realloc既可用来增加单元,也可以用来减少单元),那么减去的那部分的 数据可能没了。
(3) realloc重新分配内存大小时,应检查分配成功了还是失败了。
int count;
int* numbers = NULL;
int* more_numbers = NULL;
....
// count 一次一次变化,重新分配
more_numbers = (int*) realloc (numbers, count * sizeof(int));
if (more_numbers!=NULL) // 应检查分配成功了还是失败了
{
numbers=more_numbers;
}
else { // 失败了
free (numbers);
puts ("Error (re)allocating memory");
exit(0);
}
失败了,就难说了。
00分享举报