如果在函数返回之前忘记释放内存,如何释放函数外的内存

-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)

我希望释放已分配的内存,该内存是在该函数之外的函数中分配的。

谢谢你。

dbu*_*ush 6

有问题的指针不会以任何方式从函数返回,所以如果你不在函数中释放它,那么内存就会泄漏。您需要修改函数以将指针分配给全局变量,从函数返回它,或者将其分配给传递给函数的取消引用的指针。

如果您的目标是查找并修复程序中的内存泄漏,那么 valgrind 等工具可以帮助您解决这个问题。