1

次の行を実行した場合:

    void dummy () {
     int n;
     scanf ("%d", &n);
     int A[n];
    }

配列 A はスタックまたはヒープに割り当てられますか?

4

1 に答える 1

5

これは C または C++ の質問でしょうか?

あなたの配列宣言は、C++ では正式に違法であることに注意してください。配列宣言で配列サイズを指定するために非定数式を使用することは不正です。

C++ コンパイラがこの宣言をサポートしていると仮定すると (この機能は C 言語から借用)、Aはローカル配列オブジェクトです。これは、リンケージなしで宣言された他のローカル オブジェクトと同じ方法で割り当てられます。つまり、自動保存期間があります (用語では「スタック上」)。

于 2013-10-02T00:21:24.287 に答える