【发布时间】:2014-10-23 10:45:11
【问题描述】:
对于下面的代码: (1) “main”调用函数“f1”。 (2) 函数“f1”进行一些数字运算;使用 malloc 创建一个“char”数组,然后将该数组的指针返回给主数组(不取消分配-释放-数组)。
我有 3 个与此案相关的问题: (1) 我假设,虽然函数“f1”已经终止,但分配的 char 数组仍然保持分配状态,直到主程序完全终止。也就是说,分配的内存仍然属于 main 并且没有其他进程可以从外部访问(我的意思是,干扰)它。我对吗? (2) 是否必须在程序终止之前释放数组(在“f1”中分配)(或者是否在主程序终止后立即释放)? (3) 如果第二个问题的答案是“是”,那么如何释放分配在另一个函数中的数组?
注意:我希望停留在纯 c 的范围内,而不是溢出到 c++。
char *f1 (...) {
...
...
char *fTmp = malloc (length1 * sizeof (char));
char *fData = malloc (length2 * sizeof (char));
...
...
free (fTmp);
return (fData);
}
int main () {
char *fData = f1 (...);
...
return (0);
}
【问题讨论】: