首页 > 编程知识 正文

空指针引用异常,对象空指针引用会导致程序不正常中断

时间:2023-05-06 10:12:30 阅读:190989 作者:3505

今天看到一段奇怪的代码,它的主要流程是这样的:

void set(){ Test* p = nullptr; Test *a = new Test; *p = a; std::cout << p->getMember() << "n";}

第一感觉这代码肯定是有问题的,应该是编译不过至少应该会有warning,但事实证明这段代码可以编译通过,而且也没有warning。(虽然这段代码确实是错误的)

类Test的定义大致如下:

class Test { public: Test():member(0){}; Test(const Test* c) : member(c->member){}; int getMember() const { return member; } private: int member;};

*t=a这行代码相当于调用构造函数Test(const Test *t),所以这段代码可以编译通过。 但是运行的话会产生未定义的行为(undefined behavior)。

看来这种情况只能靠经验了。

千万不要解引用空指针,千万不要解引用空指针,千万不要解引用空指针。

转载于:https://my.oschina.net/u/1986432/blog/891948

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。