在更新指针之前自动调用delete

时间:2018-02-12 06:04:31

标签: c++11

由于我不是开发人员,我确信这是一个关键字研究问题,而不是其他任何事情。

考虑

class A
{
public:

B* myBpointer;
[...]
}


class B
{
 [...]
}

和一个简单的片段:

int main(int argc, char** argv)
{
 A myA;

 while(1)
 {
    if(myA.myBpointer)delete myA.myBpointer;
     myA.myBpointer = new B;
     [...]
 }
return 0;
}

在c ++中是否有更好的方法来声明myBpointer以避免在实际分配之前检查指针是否为空,否则删除它然后再分配它?

1 个答案:

答案 0 :(得分:1)

如果您使用std::unique_ptrstd::shared_ptr之类的智能指针,则由其管理的内存将保持活动或删除,如您所料。

如果您分配给unique_ptr,则在承担新内存的责任之前,将删除其管理的内存。