沒有人知道這是怎麼回事?它不斷給我_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