没有人知道这是怎么回事?它不断给我_BLOCK_TYPE_IS_VAILD(pHead-> nBlockUse)一个 “失败的断言”,当它试图使用detructor在一个非空栈 编辑:多个代码:“断言失败”在析构函数
class stack
{
private:
struct StackNode
{
int x;
int y;
StackNode *next;
};
StackNode *top;
public:
stack()
{ top = NULL; }
~stack();
stack::~stack()
{
StackNode *nodePtr,*nextNode;
nodePtr=top;
while (nodePtr!=NULL)
{
nextNode=nodePtr->next;
delete nodePtr;
nodePtr=nextNode;
}
}
的main.cpp
mouse_position.push(mouse_x,mouse_y);
print_stack(mouse_position);
void print_stack(stack m)
{
int tempx=0;
int tempy=0;
// while(!m.isEmpty()){
// m.pop(tempx,tempy);
cout<<tempx<<tempy<<endl;
// }
}
你在某处毁了你的记忆,这是不够的。你为'stack'写了一个合适的拷贝构造函数和赋值操作符吗? – 2011-03-15 20:17:45
@king:你应该在这个问题中增加更多的代码,例如StackNode的定义和Stack的所有构造函数/赋值/拷贝操作符,以及你正在使用哪些代码。基本上,我们可以编译一个最小的代码示例,它会重现您的问题。 – 2011-03-15 20:20:50
更多代码添加,我认为这些是主要的 – kingcong3 2011-03-15 20:25:24