1
int main(){
    int size;
    cin >> size;
    int myArray[size];
    return 0;
}

myArrayスタックに割り当てられていますか? コンパイル時にサイズが不明な場合はどうすればよいでしょうか?

余談ですが、動的にサイズ変更された配列をスタックに割り当てることは可能ですか?

これらは悪い習慣かもしれませんが、良い習慣かどうかではなく、許可されているかどうかを尋ねています。

4

3 に答える 3

4

はい、これが許可されている場所/時間 (gcc では拡張機能として許可されていますが、実際には C++ では許可されていません)myArrayがスタックに割り当てられます。実装は非常に簡単です。サイズを選択し、スタック ポインターから減算します。

前述のように、C++ は現在これを許可していませんが、dynarrayそれを許可するクラスの提案が C++ 14 のワーキング ペーパーに受け入れられているため、(おそらく) 似たようなものがすぐに許可されます (コンパイラがまだ許可していない場合)。 -- テストしたことはありませんが、簡単に実行できる人もいます)。

于 2013-07-10T02:04:15.597 に答える