A と B でセグメンテーション違反が発生するのはなぜですか。x には値が割り当てられていませんが、技術的にはまだガベージ値が残っているのでしょうか? また、なぜ D はセグメンテーション違反ではないのですか? 私の回答キーは、A と B はセグメンテーション違反であると言っていますが、それは間違っているようです。D は 0 を返そうとしているため、セグメンテーション違反があるはずです。私が間違っている場合、誰かが私を修正できますか。
A.
int x;
int* p = &x;
cout << p << *p << endl;
B.
int* p = new int;
cout << p << *p <<endl;
C.
int* p;
cout << p << *p <<endl;
D.
int* p = 0;
cout << p << *p <<endl;