7

次の状況では、次のような整数変数へのポインターを含む構造体があります。

struct Structure[] = { 
    { &Var[0], &Var[1] },
    { &Var[2], &Var[3] }
};

問題はVar、この構造体が初めて埋められたときに初期化されていないことです。(: のようにNULL) (最初のパスで) その直後に、変数Varが初期化され、それに応じて参照が更新されます。

これが誤動作する理由はわかりませんが、あなたの専門知識をお願いします. このような配列に無効なメモリ (配列添字付き) への参照を入れることは合法ですか? それとも、この状況に対して別の種類のアプローチが必要ですか?

最初の初期化が終わるまで、これらの変数の内容にはアクセスしません。

どうもありがとうございました。

編集: 将来の読者のために:Varはグローバル ポインター変数であり、最初は NULL に初期化されます。初期化では、 を使用して配列に変換しnewます。

4

3 に答える 3

0

特定の質問に答えるには (サンプル コードは忘れてください): はい、初期化されていないメモリへの参照を使用できます。単純にそれを逆参照して、定義された動作を期待することはできません。

于 2013-08-05T15:48:18.967 に答える