次のように私は、一次元配列のためにnew演算子を書き込むことができます。オペレータnewが非定型サイズの多次元配列を構築できないのはなぜですか?
int n{3};
new int[n];
それは少なくともsizeof(int) * n
バイトを割り当てます。しかし、2次元配列を作成する場合は、最初の次元だけが非定数になることがあります。
int n{3};
new int[n][3]; //ok
new int[n][n]; //error;
なぜこのような制限が行われるのですか?決定するのが難しいですか、それは少なくともsizeof(int) * n * n
バイトを割り当てることですか?
VLAに自動ストレージを設定することはできません。なぜ、動的記憶域に使用できるのですか? – StoryTeller
StoryTellerですが、1次元配列の場合はそれが機能しますが、なぜ次元配列が許されないのですか? – user3514538
あなたはVLAを持っていません。つまり、VLAのint(*)[n] 'へのポインタを持つことはできません。それは、そのような式が返す必要があるものです。 – StoryTeller