c++在delete后要把指针赋值为nullptr

本文探讨了在C++中new和delete操作后,如何正确判断已析构对象的指针,强调了在delete后置指针为nullptr的重要性,避免因误判导致的问题。
  • 在C++中我们new了一个对象后,返回的是这个对象的指针,如QObject* pObject = new QObject();
  • 在使用完对象后,我们用delete删除这个对象,如delete pObject;
  • 如果我们没有在delete后将pObject赋值为nullptr,其实指针pObject是会指向之前的那个地址的,只是这个地址处的对象已经被析构了。
  • 所以如果我们用if(pObject)这样的条件来判断对象是否已被析构,其实是会有问题的。如果想要这样判断,我们可以在delete后将该指针赋值为nullptr。
//下面这样是错误的!!
QObject* pObject = new QObject();
//使用pObject 
delete pObject;
//如果对象被析构则进行如下逻辑。错!!!!
if(pObject)

//下面这样是正确的!!
QObject* pObject = new QObject();
//使用pObject 
delete pObject;
pObject = nullptr;
//如果对象被析构则进行如下逻辑。错!!!!
if(pObject)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值