#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