私はC99であなたのサイズはこのように、パラメータの値である配列宣言することができることを知っている:私が理解から隠しメモリ割り当てですか?
void foo(int size) {
int array[size];
// do stuff
}
を関数が呼び出されたとき、それはスタック上に割り当てられています。どうやら、これはC++で動作するはずではありません。
は最近、私はC++でこのような何かを書いた:
void bar(vector<Thing> vec) {
for (Thing t : vec) {
int n = t.get_n();
int array[n];
// do stuff
}
}
驚くべきことに、コンパイラ(G ++)は、なぜ、文句はないのですか? 隠れたメモリ割り当てがありますか?
あなたの警告をオンにしなかったので、gcc拡張子 –
なぜ[可変長配列はC++標準の一部ではないのですか?](https://stackoverflow.com/questions/1887097)/why-arent-variable-length-arrays-c-standardの一部)またはhttps://stackoverflow.com/questions/7812566/why-no-variable-size-array-in-stackまたはhttps: //stackoverflow.com/questions/17899274/g-variable-size-array-no-warningまたはhttps://stackoverflow.com/questions/43857625/variable-sized-array-on-the-stackなど –