由于我不是开发人员,我确信这是一个关键字研究问题,而不是其他任何事情。
考虑
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以避免在实际分配之前检查指针是否为空,否则删除它然后再分配它?
答案 0 :(得分:1)
如果您使用std::unique_ptr
或std::shared_ptr
之类的智能指针,则由其管理的内存将保持活动或删除,如您所料。
如果您分配给unique_ptr
,则在承担新内存的责任之前,将删除其管理的内存。