试图访问空指针

Cae*_*sar 8 c++ null pointers

#include <iostream>

int main()
{
    int* i = 0;
    int x = (*i);
    std::cout << x;
}
Run Code Online (Sandbox Code Playgroud)

当我编译并运行它时,上面的程序将崩溃Visual Studio 2010,我知道它崩溃,因为我将指针设置为0.

我想知道的是,访问null pointer标准中定义的C++,还是未定义的,我很幸运,因为我的编译器/计算机/操作系统,我的程序崩溃了

如果定义了,当我尝试访问空指针时C++会保证什么?

izo*_*ica 9

取消引用空指针将调用未定义的行为.它可能会在不同的编译器上产生不同的东西,甚至更多 - 如果多次编译,同一编译器可能会发生不同的事情.根本不保证这种行为.