是否在存储在堆栈中的函数内声明了const数组?

Dyn*_*ite 3 c++ stack

如果这是在一个函数中声明的,它会在堆栈中声明吗?(它是const是让我惊讶的原因)

void someFunction()
{

     const unsigned int actions[8] = 
     {       e1,
             e2,
             etc...
     };
 }
Run Code Online (Sandbox Code Playgroud)

xto*_*ofl 5

是的,他们在堆栈中.你可以通过查看这段代码来看到这一点:它必须打印破坏消息5次.

struct A { ~A(){ printf( "A destructed\n" ); } };

int main() {
    {
      const A anarray  [5] = {A()} ;
    }
    printf( "inner scope closed\n");
}
Run Code Online (Sandbox Code Playgroud)

  • const-ness不会影响那个.`static`会给它静态存储持续时间.Const只是指定它可能不会被修改,它不会影响生命周期. (3认同)
  • 或多或少.该标准根本不涉及"堆栈".但它确实说变量默认为*自动存储持续时间*,也就是说,它们在超出范围时会被销毁.实现它的方式是使用堆栈.所以不,你不能保证它在(或*a*)堆栈上分配它,但你可以保证它的行为就像它一样 (2认同)