【发布时间】:2018-06-07 08:30:30
【问题描述】:
我使用 malloc 创建了 10 个整数大小的数组。我为元素添加了值。然后,我将它重新分配到 newArr 中的 200 个字节。然后我再次将 newArr 重新分配到大小为 10 个整数的 newArr2 中。代码:
void main(){
int i, *arr = (int *)malloc(10* sizeof(int));
for(i=0; i<10; i++){
arr[i] = i;
}
int *newArr = (int *)realloc(arr, 200);
int *newArr2 = (int *)realloc(newArr, 10* sizeof(int));
}
我应该如何使用 free 来删除这里所有分配的内存?我在清除所有这些时遇到错误。
编辑:根据接受的答案,旧内存应该已被清除,但它没有。我能够访问内存并能够更改旧地址的值。
【问题讨论】:
-
这段代码的哪一部分甚至试图“清除”任何东西?
-
我已将其删除。它是免费的(arr);免费的(新的);免费(newArr2);
-
void main()是非标准的,使用int main(void)。向他人展示您的代码时,切勿省略#include指令。