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

时间:2012-04-20 06:34:45

标签: c++ pointers vector

我有这堂课:

class GameData
{
public:
    GameData();
    ~GameData();
    vector<Bullet> bullets;
}

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

由于

2 个答案:

答案 0 :(得分:5)

  

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

没有。它由向量的析构函数完成,它将被自动调用。

-

  

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

如果使用某种形式的智能指针(例如std::unique_ptrstd::shared_ptr),则不必执行此操作。使用智能指针,您不必删除它,因为它是智能指针本身的责任。

从这里阅读 Smart Pointers 部分:

答案 1 :(得分:3)

您无需担心GamaData成员,只需确保删除GamaData个实例,因为您使用new创建了该实例。