如果您在函数中声明了 const int,是否必须取消分配它?

Do you have to deallocate a const int if you declared it inside a function?

提问人:olemca 提问时间:1/29/2021 最后编辑:Remy Lebeauolemca 更新时间:1/29/2021 访问量:274

问:

void func()
{
    const int intAge = 24;
}

跑步后会发生什么?是否必须取消分配它,或者 C++ 编译器是否执行此操作?intAgefunc()

C++ 范围 自动存储

评论

1赞 scohe001 1/29/2021
你看到了什么,让你认为你可能需要在这里手动解除分配?
2赞 blackbrandt 1/29/2021
试试这个答案
1赞 smac89 1/29/2021
您可能还想查找静态变量和常量变量之间的区别
1赞 Kao 1/29/2021
过于简化的解释:当使用关键字创建变量时,您需要使用关键字解除分配。deletenew

答:

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 上,局部变量是在堆栈内存中分配的,是的。