C++ - 使用向量清理堆上类的正确方法

wil*_*ill 1 c++ pointers vector

我有这门课:

class GameData
{
public:
    GameData();
    ~GameData();
    vector<Bullet> bullets;
}
Run Code Online (Sandbox Code Playgroud)

在主程序中,我创建了一个GameData指针并为new分配内存.我知道新的,你也应该删除数据.我上面的矢量不是指向子弹的指针向量,只是子弹本身(它们应该是指针吗?)在~GameData()函数中,我需要清除子弹?我应该确定它是空的,如果不清楚的话?为了良好的内存管理,正确"删除"它的具体方法是什么?如果我的设计有误,请告诉我正确处理此问题的方法.

谢谢

Naw*_*waz 5

在~GameData()函数中,清除项目符号需要什么?

不是.它由向量的析构函数完成,它将被自动调用.

-

我创建一个GameData指针并为new分配内存.我知道新的,你也应该删除数据

如果使用某种形式的智能指针,例如std::unique_ptr或,则不必这样做std::shared_ptr.使用智能指针,您不必删除它,因为它是智能指针本身的责任.

从这里阅读Smart Pointers部分: