#include <iostream>
int main()
{
int *ptr = NULL;
// It does not crash
*ptr; --------> Point-1
//But this statment crashed
std::cout<<"Null:"<<*ptr<<"\n"; ------> Point-2
return 0;
}
上記のコードでは、 "Point-2"とコメントしてもコードはクラッシュしません。 しかし、「Point-2」をコメント解除すると、クラッシュします。 ptrがNULLなので、理想的にはPoint-1もクラッシュするはずです。もし私が間違っているなら、私に連絡してください。 誰かがなぜ私は単純にポインタをderefferneceするときにコードがクラッシュしなかったのか説明することができますか?なぜ単にNULLを割り当てられたポインタを参照解除するとクラッシュしない
デバッグモードで最適化を行わずにコンパイルして、もう一度やり直してください。 – BlackBear
*定義されていない動作*が発生すると仮定して停止します。それはしません。事実、もしあなたが*運が良ければ、それはクラッシュし、本当になぜそれが本当であるのかを理解したいと思ってほしいのです。 – WhozCraig
参考: - http://stackoverflow.com/questions/12645647/what-happens-in-os-when-we-dereference-a-null-pointer-in-c – ravi