是c++中被垃圾收集的原始变量

Are primitive variables garbage collected in C++

本文关键字:原始 变量 c++      更新时间:2023-10-16

如果有这样的函数:

int func1() {
    int status = func2();
    // Do something with status.
    return status;
}

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

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

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

内存是从堆栈中分配的。当函数被调用时,堆栈指针将被增加到足以保存函数参数、局部变量、返回值(可能)和返回地址。当函数返回时,堆栈指针按完全相同的量递减,并在返回地址处恢复控制。

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