#include<stdio.h>
#include<stdlib.h>
int * doall() {
int *a;
a=(int*)malloc(sizeof(int)*2);
a[0]=2;
a[1]=3;
return a;
}
int main() {
int *arr;
arr=doall();
for(int i=0;i<2;i++) {
printf("%d ",arr[i]);
}
printf("\n");
free(arr);
return 0;
}
是否可以free(a);
? free(arr)
是否在 doall
函数中释放“a”?
在doall
中a=(int*)malloc(sizeof(int)*2);
最佳答案
Is it possible to
free(a);
没有。当 doall
完成时,已经没有变量 a
,只有它的值。但是,由于此值随后被分配给 arr
,因此您的程序保留对 doall
已分配的 block 的引用。
Does
free(arr)
deallocatea
indoall
function?
它不会释放a
,因为在调用free
时,变量a
已经消失了。但是,它会释放之前分配给 a
的内存,因此不存在内存泄漏。
关于c - 我怎样才能释放内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35844588/