c++ - 如何释放向量?
问题描述
在我的课上我写了
class Game {
private:
mtm::Dimensions dimensions;
std::vector<Character*> board;
public:
explicit Game(int height, int width):dimensions(height,width), board(height*width){
}
~Game() {}
};
但是我应该如何释放我的向量,我认为如果我将 d'tor 留空,它会泄漏内存。
解决方案
如果Game
不是所有者,则不得释放内存。主人必须清理。
如果Game
是所有者,它可以删除析构函数中的所有元素
~Game() {
for (auto &character : board) {
delete character;
}
}
更好的方法是使用智能指针并删除析构函数
std::vector<std::unique_ptr<Character>> board;
您应该尝试遵循0 规则
推荐阅读
- php - 在 php 中创建不可继承的类方法
- html - 如何从excel表中的链接列表中提取网站中的表格?
- python - 使用 df.to_sql 插入带撇号的姓氏
- ios - 查看 Xcode 中的 TestFlight 崩溃日志
- python-3.x - 使用 Python 3 在计算机上搜索 .mp3
- node.js - 平均堆栈的平方支付
- wix - WiX - 从上一个对话框设置属性
- angular - 具有相关服务的延迟加载功能模块
- javascript - “blob:http: ...”是什么?以及如何将其保存到文件中?
- javascript - 通过 javascript 或 java 识别浏览器语言