我遇到的问题是,当我的类 CLimb 运行其析构函数时,如果成员 *parent
是NULL
在调用析构函数之后但在执行正文之前,我得到一个“访问冲突写入位置 0xcccccccc” 错误。
肢体.h
class CLimb
{
public:
CLimb(void);
CLimb(CLimb *_parent);
~CLimb(void);
float cut;
float bone;
float resistance;
CLimb *parent;
};
肢体.cpp
#include "limb.h"
CLimb::CLimb(void) :
cut(0),
bone(0),
resistance(0)
{
parent = NULL;
}
CLimb::CLimb(CLimb *_parent) :
cut(0),
bone(0),
resistance(0)
{
parent = _parent;
}
CLimb::~CLimb(void)
{
}
我也想知道我是否有 2 个实例,limb01
和 limb02
, 其中limb02
是 limb01
的父级, 如果 limb02
被删除limb01->parent
现在指向一个不正确的地址。我将如何解决这个问题?我需要添加 *child
吗?还有指针?
最佳答案
智能指针是一种解决方案。特别是,您可以在此处使用弱指针。当指向的对象的引用计数下降到零时(即当它被删除时),弱指针会自动重置。
关于c++ - 破坏空指针时的访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7062735/