当程序取消引用空指针时,程序可能不会崩溃?

问题描述 投票:0回答:1

我曾经相信,当取消引用空指针时,程序会立即崩溃

但是下面的代码片段效果很好。真是一个惊喜!

#include <iostream>
#include <vector>

struct foo
{
    void test()
    {
        std::cout << "This is displayed\n";
    }
};

int main()
{
    foo *f = nullptr;
    f->test();
}
c++ c++11 crash
1个回答
0
投票

取消引用

nullptr
未定义的行为。因此它可能会崩溃,也可能不会。编译器可以通过此操作跳过/优化该行,因为从用户端保证,
nullptr
永远不会被取消引用。

© www.soinside.com 2019 - 2024. All rights reserved.