如何在取消引用nullpointer时创建错误?

Dav*_*ius 1 c++ gcc visual-studio-2010

以下代码编译时没有错误,并且运行时没有分段错误:

int* a = 0;
int& b = *a;
Run Code Online (Sandbox Code Playgroud)

我们在引用中确实有一个nullpointer.可以在项目中移动此引用一段时间,直到它被使用.当它被使用时,它将产生分段错误.

目前使用的编译器是MSVC 10.0和gcc 4.9.为了便于找到错误,我希望取消引用在nullpointers上失败,以便在上面的代码中引起分段错误.是否有可能实现这一目标以及如何实现?

Bat*_*eba 5

代码的行为未定义.

您可能不一定会遇到分段错误(编译器甚至可能会优化有问题的语句),因此不要在可移植C++中依赖此技术.

如果你想崩溃你的程序然后使用std::abort();,或std::terminate();

如果要测试指针ptr的null,请使用

if (!ptr){
    // ptr is nullptr
}
Run Code Online (Sandbox Code Playgroud)

参考文献:

http://en.cppreference.com/w/cpp/utility/program/abort http://en.cppreference.com/w/cpp/error/terminate