如何在堆栈上释放变量?

fdh*_*fdh -4 c++ memory

有没有办法解除分配在堆栈上创建的变量和/或对象?我特别谈论堆栈而不是堆.

我不想辩论这是否有用或好的做法,我只需要知道它是否可行.

我知道当它超出范围时会自动解除分配.我想在它超出范围之前解除分配.

我正在使用C++.

Xeo*_*Xeo 10

{
  int a;
} // 'a' "deallocated" here
Run Code Online (Sandbox Code Playgroud)

你无法摆脱a封闭范围的结束.


Car*_*rum 5

每次从函数返回时,该函数在堆栈上分配的任何内存都会被释放。如果由于某种原因需要缩小变量的范围,您可以通过创建一个带有{}.

void function(void)
{
   int x;
   {
     int y;
   } // scope of y ends
} // scope of x ends
Run Code Online (Sandbox Code Playgroud)

  • @Farhad,你可能没有。如果不解释为什么需要这样做,您就不太可能得到更好的答案。 (2认同)
  • @Farhad,目前还不清楚你为什么想要更多。请告诉我们为什么这个答案对您不起作用。 (2认同)