次のコードを実行した後の q の値は? m' はバイト 2 からメモリに格納され、メモリに問題はありません。
int m = 44;
int* p = &m;
int n = (*p)++;
int* q = p - 1;
++*q;
このコードを gcc で実行すると、コードは q が指すメモリを 1606417464 に初期化し、最後の行でそれを 1606417465 に変更します。このメモリ ブロックには値が割り当てられていないため、これは理にかなっています。
xtools を使用して Mac でこのコードを実行すると、q が指すメモリはゼロとして初期化され、++*q の後に 1 に変更されます。この動作が発生する理由は何ですか?