在c ++中创建一个非常长的数组时会发生什么?

Ali*_*232 2 c++ arrays

AFAIK此代码不是标准的有效c ++代码:

int a = 5;
int b[a];
Run Code Online (Sandbox Code Playgroud)

但似乎很多编译器可以编译该代码(主要是警告),它只是按预期运行.我错了是编译器对我好吗?

Naw*_*waz 8

它被称为可变长度数组(VLA),标准C++,任何版本的C++都不允许这样做,尽管有些GCC支持它作为扩展.

如果您正在使用GCC,那么

  • 用-pedantic选项编译它,你会看到警告.
  • 使用-pedantic -Werror选项编译它,您将看到警告变为错误.

VLA只允许通过C99,但不能通过其他版本的C.