函数返回局部变量后内存空间的行为如何?

Vis*_*ngh 2 c memory-leaks

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
}
Run Code Online (Sandbox Code Playgroud)

在这里,我可以看到有什么问题,因为内存泄漏是loc变量.但是,变量x怎么样?如果我们在函数返回后保留变量x以及loc变量无人值守(非自由),那么两个变量获取的内存空间会发生什么?

他们(两个变量)还会获得空间吗?

Jon*_*ood 6

实际上,xloc变量都是局部函数变量,当函数返回时,两个变量都被释放.

但是,loc指针和指针指向的内存是未释放的内容.它只是malloc()被释放的内存所释放.