【发布时间】:2017-06-07 04:18:00
【问题描述】:
这是一个用于在动态数组上重新分配一些内存的函数。我已经将struct lottery 定义为lot。我通过引用传递结构数组 (a) 和我希望它具有的新大小 (n)。我正在声明一个临时数组 (b),以便我可以重新分配到 a。
我的问题是:我正在使用b = realloc() 等在堆上创建一些字节,但是如果我在退出函数之前free(b) 将无法正常工作。如果我再次调用它b == NULL 变为true,但如果我删除free(b) 它工作得很好,但我认为这是不对的,因为我在堆上留下了垃圾字节。有人可以向我解释一下这个问题吗?
lot *Enterd(lot **a, int n) {
lot *b = NULL;
b = (lot *)realloc(*a, n * sizeof(lot));
if (b == NULL) {
printf("Memory could not be allocated for the new input.\n");
return NULL;
}
*a = b;
free(b);
return *a;
}
【问题讨论】:
标签: c memory dynamic free realloc