gpt4 book ai didi

c++ - 我在这里正确管理内存了吗? (简单的 C++ 堆栈)

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:14:22 25 4
gpt4 key购买 nike

我是一个动态分配内存的菜鸟。这会导致内存泄漏或任何其他内存问题吗?

#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 使用的 dequevector 实现相比,性能相对较差: :堆栈

关于c++ - 我在这里正确管理内存了吗? (简单的 C++ 堆栈),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3592968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com