首页 > 解决方案 > 如何释放向量?

问题描述

在我的课上我写了

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 留空,它会泄漏内存。

标签: c++classmethods

解决方案


如果Game不是所有者,则不得释放内存。主人必须清理。

如果Game是所有者,它可以删除析构函数中的所有元素

~Game() {
    for (auto &character : board) {
        delete character;
    }
}

更好的方法是使用智能指针并删除析构函数

std::vector<std::unique_ptr<Character>> board;

您应该尝试遵循0 规则


推荐阅读