我已尝试过以下代码。但它总是崩溃。为什么?我甚至没有改变地址0的内容。 在mingw32-g ++上编译
#include<iostream>
int main(){
int* p=0;
std::cout<<*p;
}
答案 0 :(得分:2)
取消引用空指针会产生未定义的行为。
在一个相当典型的案例中,那里真的没什么。例如,在受保护模式下的x86上,通常会为内存的开头设置一些页表条目,表示不存在任何内容,因此任何读取或写入该地址的尝试都将导致页面错误(例如,两个Windows和Linux这样做。)