地址 0 通常没有什么

What't there at address 0 usually

本文关键字:什么 常没 地址      更新时间:2023-10-16

我尝试了以下代码。但它总是崩溃。为什么?我什至没有更改地址 0 的内容。编译于 mingw32-g++

#include<iostream>
int main(){
    int* p=0;
    std::cout<<*p;
}

取消引用空指针会给出未定义的行为。

在一个相当典型的案例中,那里真的什么都没有。例如,在保护模式下的 x86 上,您通常会为内存的开头设置一些页表条目,这些条目表明内存中不存在任何内容,因此任何读取或写入该地址的尝试都会导致页面错误(例如,Windows 和 Linux 都这样做)。