如果在函数中声明了它,它是否会在堆栈中声明? (这是const是让我想知道的事情)
void someFunction()
{
const unsigned int actions[8] =
{ e1,
e2,
etc...
};
}
答案 0 :(得分:5)
是的,他们在堆栈中。你可以通过查看这段代码来看到这一点:它必须打印破坏消息5次。
struct A { ~A(){ printf( "A destructed\n" ); } };
int main() {
{
const A anarray [5] = {A()} ;
}
printf( "inner scope closed\n");
}
答案 1 :(得分:4)
据我所知:是的。我被告知您需要使用static
限定常量以将它们放入数据段中,例如。
void someFunction()
{
static const unsigned int actions[8] =
{
e1,
e2,
etc...
};
}
答案 2 :(得分:2)
如果您不希望在堆栈上创建阵列,请将其声明为静态。作为const可能允许编译器优化整个数组。但如果它将被创建,它将在堆栈AFAIK上。
答案 3 :(得分:0)
是的,总是在堆栈上创建非静态变量。