それはC++で静的配列は、constの式からのみ初期化できることを忘れているようだが、あなたが書いた場合:C++静的配列は
#include <iostream>
int main() {
int n;
std::cin >> n;
int a[n];
std::cout << sizeof(a);
return 0;
}
このプログラムが正常にコンパイル(gccのC++ 17)とn * sizeof(int)を出力します。 しかし、なぜこれはそうですか?
'std :: vector'を使わないのはなぜですか? –
GCC(残念なことに)はデフォルトで拡張としてVLAを許可します。 '-std = C++ 17'や' -Wvla -Werror'でコンパイルすれば、それはできません。 –
しかし、VLAはどのように機能しますか?スタックの予約はありますか? – Mano