gpt4 book ai didi

c++ - 如何在取消引用空指针时创建错误?

转载 作者:行者123 更新时间:2023-11-30 00:44:58 25 4
gpt4 key购买 nike

以下代码编译无误,运行无段错误:

int* a = 0;
int& b = *a;

我们在引用中确实有一个空指针。该引用可能会在项目中移动一段时间,直到它被使用为止。当它被使用时,它会产生一个段错误。

目前使用的编译器是MSVC 10.0和gcc 4.9。为了便于发现错误,我希望取消引用在空指针上失败,以便在上面的代码中导致段错误。是否有可能实现这一点以及如何实现?

最佳答案

您的代码的行为未定义

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

如果你想让你的程序崩溃,那么使用std::abort();,或者std::terminate();

如果你想测试指针 ptr 是否为空,那么使用

if (!ptr){
// ptr is nullptr
}

引用资料:

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

关于c++ - 如何在取消引用空指针时创建错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45461833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com