我对C++相对较新,从一开始就被灌输了这样的观念:不能做如下操作:
int x;
cin >> x;
int array[x];
所以您必须使用动态内存。然而,我最近发现上述内容 会 编译通过(尽管我会收到一个 -pedantic 警告,说它违反了 ISO C++ 标准)。我知道如果不符合标准,这样做显然是一个坏主意,但我之前甚至都不知道这是可能的。
我的问题是,为什么 g++ 允许未经动态分配的可变长度数组,如果这在标准中是不允许的?此外,如果编译器可以做到这一点,为什么它不被包含在标准中呢?