我是一个动态分配内存的菜鸟。这会导致内存泄漏或任何其他内存问题吗?
#include <iostream.h>
template <class T> class stack
{
struct node
{
T value;
node* next;
};
public:
stack()
{
size = 0;
}
~stack()
{
while(size > 0)
{
node *n = top->next;
delete top;
top = n;
size--;
}
}
void push(T value)
{
node *n = new node;
n->value = value;
if(size == 0)
{
top = n;
}
else
{
n->next = top;
top = n;
}
size++;
}
T pop()
{
if(size<1)
{
std::cerr<<"Stack underflow"<<endl;
exit(0);
}
else
{
node* n = top;
int val = n->value;
top = n->next;
delete n;
size--;
return val;
}
}
int getSize()
{
return size;
}
private:
int size;
node *top;
};
最佳答案
我没有看到任何内存管理错误——但我确实看到了其他几种错误。例如,当 T
不是 int
时会发生什么? :)
此外,将堆栈实现为链表是一种浪费,与 std 使用的
。deque
或 vector
实现相比,性能相对较差: :堆栈
关于c++ - 我在这里正确管理内存了吗? (简单的 C++ 堆栈),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3592968/