【发布时间】:2021-12-31 03:10:24
【问题描述】:
我有一个std::stack,里面有一些指针:
std::stack<State*> m_states;
当我初始化我的程序时,我调用new 将一个项目压入堆栈(它必须是一个指针,因为我将使用多态类型)。
这是删除所有东西的正确方法吗?
这里是我调用 new 的地方(GameState 和 MenuStatesare classes inherited fromState`):
m_states.push(new GameState());
m_states.push(new MenuState());
这就是我在整个 App 类的析构函数中所拥有的:
while (!m_states.empty())
{
delete m_states.top(); // (*)
m_states.pop();
}
我应该只拨打 (*),还是也需要拨打 pop()?
【问题讨论】:
-
最好使用
unique_ptr并且根本不需要处理清理工作。
标签: c++ pointers heap-memory stack-memory