-1 c c++ memory-leaks
我的问题可以简要显示为以下示例。
void func(int n){
char *p = (char*)malloc(n);
// some codes
memset(p,0,sizeof(name));
// free(p); // Commenting this line represents that I forget to release the allocated memory.
}
int main(){
// some codes
for (int i; i < Nl; i++){
func(100);
// How can I release the allocated memory of p outside of the func?
}
}
Run Code Online (Sandbox Code Playgroud)
我希望释放已分配的内存,该内存是在该函数之外的函数中分配的。
谢谢你。
有问题的指针不会以任何方式从函数返回,所以如果你不在函数中释放它,那么内存就会泄漏。您需要修改函数以将指针分配给全局变量,从函数返回它,或者将其分配给传递给函数的取消引用的指针。
如果您的目标是查找并修复程序中的内存泄漏,那么 valgrind 等工具可以帮助您解决这个问题。