C 内存泄漏错误在实现堆栈类时
C++ Memory leak error when implementing Stack class
i正在实现堆栈类,当我尝试调用push()时,我收到了一个内存泄漏错误(Double Free或Doufferion(FastTop))。这是我的代码:
#include "StackNode.h"
#include "Stack.h"
#include <iostream>
using namespace std;
Stack::Stack(){
curr = NULL;
}
Stack::~Stack(){
while(!empty())
pop();
delete curr;
}
bool Stack::empty(){
return curr==NULL;
}
int Stack::top(){
return curr->value;
}
void Stack::push(int a){
StackNode * temp = new StackNode;
temp->value = a;
if (!empty()) // atleast 1 element
temp->prev = curr; // temp links to current
curr = temp; // current becomes temp
}
void Stack::pop(){
if (!empty()){
StackNode * temp = curr;
curr->prev = curr;
delete temp;
}
}
我调试并将其追溯到:
temp = curr;
我看不到实现push()方法的任何其他方法。我的stackNode仅包含一个默认构造函数,该构造器将指针 Prev 设置为 null 。任何帮助,将不胜感激。谢谢!
编辑:这是我的stacknode:
#include "StackNode.h"
#include <iostream>
using namespace std;
StackNode::StackNode(){
prev = NULL;
}
这是我的主要:
#include <iostream>
#include "Stack.h"
using namespace std;
int main(){
// Stack s;
s.push(1);
// cout<<s.top()<<endl;
cout<<"pass"<<endl;
return 0;
}
我有三个问题。
-
stack :: pop
void Stack::pop(){ if (!empty()){ StackNode * temp = curr; curr->prev = curr; // curr = curr->prev ? delete temp; } }
-
stack ::〜stack
Stack::~Stack(){ while(!empty()) pop(); delete curr; // Why delete curr here? }
-
stack :: push
void Stack::push(int a){ StackNode * temp = new StackNode; temp->value = a; // temp->prev assign NULL ? if (!empty()) temp->prev = curr; curr = temp; }
相关文章:
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 了解使用堆栈实现队列的递归调用机制
- 为堆栈实现泛型集合
- 未分配被释放的指针(将堆栈实现为链表时)
- 在C++中使用链表的堆栈实现中,访问结构体headNode成员count和top会导致运行时错误
- 河内塔C++堆栈实现
- 线程安全堆栈实现
- 使用导致分段错误的类C++中的堆栈实现
- C++堆栈实现弹出函数不起作用
- 我的矩阵堆栈实现(OpenGL ES 2.0)有什么问题
- 堆栈实现C
- C 堆栈实现意外输出
- 指针数组堆栈实现
- C++ 堆栈实现硬件错误
- C++堆栈实现 - 两个版本的 top 方法
- 无法理解堆栈实现的isEmpty函数中的返回语句
- 在编写堆栈实现 c++ 时遇到问题
- 使用堆栈实现C++
- 测试《毁灭战士3》堆栈实现时堆栈损坏
- 使用 3 个堆栈实现排序.(分段错误 - 核心转储)