【发布时间】:2011-08-15 07:55:33
【问题描述】:
我遇到的问题是,当我的类 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 指针吗?
【问题讨论】:
-
问题可能出在其他地方:您既没有在提供的任何代码中分配、释放或使用
parent指针。CLimb所写的析构函数根本不会触及该指针。 -
显示创建和删除对象的代码。
标签: c++ destructor access-violation null-pointer