是c++中被垃圾收集的原始变量
Are primitive variables garbage collected in C++
如果有这样的函数:
int func1() {
int status = func2();
// Do something with status.
return status;
}
在这个函数的过程中,一个int类型的变量状态被分配了内存,在函数的过程中,这个变量被使用,然后从func1返回。
我的问题是,什么时候为这个原语收集内存垃圾,或者它是否永远留在内存中?
在您的示例中,状态变量在堆栈中分配,并在func1返回后立即释放。
内存是从堆栈中分配的。当函数被调用时,堆栈指针将被增加到足以保存函数参数、局部变量、返回值(可能)和返回地址。当函数返回时,堆栈指针按完全相同的量递减,并在返回地址处恢复控制。
换句话说,status
声明将导致堆栈指针增加额外的sizeof(int)
字节(如果编译器决定为了对齐,可能会增加更多)。
相关文章:
- std::move 如何使原始变量的值无效?
- 如果包含引用成员的类中缺少原始变量,为什么它仍然可以访问?
- 如何从字符串变量为正则表达式构建原始字符串
- 是否可以保证浮点变量的副本将按位等效于原始副本?
- 为什么存储在变量中的值比原始答案少 1?
- 在C++中使用多线程时,是否可以读取半写的、损坏的原始变量?
- 如何将变量用作原始 JSON 字符串中的数据?
- #defined 函数只能接受原始输入而不接受变量?
- C++ 如何更改函数中原始变量的值
- 使用 const_cast<> 并更改地址处的值不会更改原始变量
- 重载运算符保持变量更新,而不是保持原始变量
- 在C++中使用别名而不更改原始变量的值
- 如何修改通过值传递的原始变量的内容
- 如果使用引用的目的是更改原始变量的值,为什么要使用 const 引用传递?[C++]
- [C++传递值]:被调用函数是否可以修改原始变量的内容
- 是c++中被垃圾收集的原始变量
- 在 cpp 中,我是否必须始终"free"原始变量?
- 初始化另一个变量或反复使用原始变量
- 尝试反映对原始变量的更改(通过引用调用)的效果
- 哪些情况会导致对c++代码进行原始变量的简单搜索失败?