提问人:olemca 提问时间:1/29/2021 最后编辑:Remy Lebeauolemca 更新时间:1/29/2021 访问量:274
如果您在函数中声明了 const int,是否必须取消分配它?
Do you have to deallocate a const int if you declared it inside a function?
问:
void func()
{
const int intAge = 24;
}
跑步后会发生什么?是否必须取消分配它,或者 C++ 编译器是否执行此操作?intAge
func()
答:
3赞
eerorika
1/29/2021
#1
具有自动存储持续时间的变量的存储在变量超出范围时会自动解除分配。这由语言实现处理。
事实上,没有必要也没有办法手动释放任何变量的内存。只能手动释放动态内存。
2赞
hgs3
1/29/2021
#2
不。内存使用堆栈内存进行分配,堆栈内存在作用域结束后自动释放。用于管理堆栈内存的代码由编译器在生成程序时发出。
评论
0赞
Remy Lebeau
1/29/2021
准确地说,内存是使用自动存储来分配的,这可以使用堆栈内存来实现。C++标准根本没有提到“堆栈”或“堆”内存,这是编译器基于目标平台的实现细节。
0赞
olemca
1/29/2021
@RemyLebeau我明白了。所以关键词是自动存储。在本例中,由于它是为 Windows 控制台构建的,因此它是堆栈内存。正确?
0赞
Remy Lebeau
1/29/2021
@olemca 在 Windows 上,局部变量是在堆栈内存中分配的,是的。
评论
delete
new