void local () {
int x = 100;
double *loc;
loc = (double *) malloc(sizeof(double)*100);
memset(rxnrun, 0x0, sizeof(double)*100);
// perform some operations
// free(loc);
return; // without doing free for loc variable
}
在这里,我可以看到问题所在,因为
loc
变量存在内存泄漏。但是,变量x
呢?如果在函数返回后我们将变量x
和loc
变量保留为无人值守(非空闲),那么这两个变量所获取的内存空间将如何处理?他们(两个变量)是否仍将获得空间?
最佳答案
实际上,x
和loc
变量都是本地函数变量,函数返回时,都释放了。
但是,loc
是一个指针,指针指向的内存是未释放的。只是malloc()
分配的内存没有释放。
关于c - 函数返回局部变量后,内存空间的行为如何?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26009989/