3

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;
4

2 に答える 2