原始变量是垃圾收集在C ++中

时间:2014-08-13 07:05:42

标签: c++ function garbage-collection

如果有以下功能:

int func1() {
    int status = func2();

    // Do something with status.

    return status;
}

在此函数的过程中,int类型的变量状态被分配内存,在函数过程中使用变量,然后从func1返回。

我的问题是,什么时候为这个原语收集了内存垃圾,还是它永远留在内存中?

2 个答案:

答案 0 :(得分:2)

在您的示例中, status 变量在堆栈中分配,并在 func1 返回后立即释放。

答案 1 :(得分:2)

从堆栈中分配内存。调用该函数时,堆栈指针将增加到足以保存函数参数,本地值,返回值(可能)和返回地址。当函数返回时,堆栈指针的减少量完全相同,控制将在返回地址处继续。

换句话说,status声明会导致堆栈指针增加额外sizeof(int)个字节(如果编译器为了对齐而决定可能更多)。