【发布时间】:2018-06-23 16:52:37
【问题描述】:
如果我们在main() 中使用malloc(),我们可以在free() 中使用main() 中的动态内存分配。
但是,如果我们在不同的函数中使用 malloc()
我们在main()中使用了那个函数,我们应该在哪里调用free()来释放在那个函数中分配的内存?
即,在以下源代码中:
#include <stdio.h>
#include <stdlib.h>
int * memory_allocate_function(int);
int main(void) {
int n=5; //length of array, 5 for example.
int *my_array;
my_array = memory_allocate_function(n);
return 0;
}
int * memory_allocate_function(int n) {
int i;
int *array;
array=(int *)malloc(n * sizeof(int));
if(array == NULL) {
printf("can not allocate memory.");
return NULL;
}
// I think i can't use "free(array);" in here.
// Because I need that array in main().
return array;
}
这是最好的方法吗?
【问题讨论】:
-
谁说如果你在
main中调用malloc,你必须在main中调用free? -
你是否真的尝试过放一个 free 并编译/运行?
-
因为,是的,您可以而且应该在代码中可疑注释所在的位置使用免费权限。
-
我解决了问题,现在我需要
main()中的那个数组 -
您的新评论是正确的。现在你在 main 中释放它。顺便说一句,在人们发布好的答案之后显着改变代码的含义是相当不和谐的。
标签: c function memory-management free dynamic-memory-allocation