【问题标题】:Do you have to deallocate a const int if you declared it inside a function?如果您在函数中声明了 const int,您是否必须释放它?
【发布时间】:2021-05-02 14:10:04
【问题描述】:
void func()
{
    const int intAge = 24;
}

运行func()intAge 会发生什么?你必须释放它,还是 C++ 编译器这样做?

【问题讨论】:

  • 您看到了什么让您认为您可能需要在这里手动解除分配?
  • 试试this answer
  • 您可能还想查找静态变量和 const 之间的区别
  • 过于简单的解释:当使用new 关键字创建变量时,您需要使用delete 关键字解除分配。

标签: c++ scope automatic-storage


【解决方案1】:

当变量超出范围时,具有自动存储持续时间的变量的存储被释放自动。这由语言实现处理。

事实上,没有必要也没有办法手动释放任何变量的内存。只有动态内存可以手动释放。

【讨论】:

    【解决方案2】:

    没有。内存是使用 stack memory 在作用域结束后自动释放的。管理堆栈内存的代码由编译器在您构建程序时发出。

    【讨论】:

    • 准确地说,内存是使用自动存储分配的,可以使用堆栈内存来实现。 C++ 标准根本没有提到“堆栈”或“堆”内存,这是基于目标平台的编译器的实现细节。
    • @RemyLebeau 我明白了。所以关键词是自动存储。在这种情况下,由于它是为 Windows 控制台构建的,因此它是堆栈内存。对吗?
    • @olemca 在 Windows 上,局部变量分配在堆栈内存中,是的。
    猜你喜欢
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 2012-09-08
    相关资源
    最近更新 更多