我有这堂课:
class GameData
{
public:
GameData();
~GameData();
vector<Bullet> bullets;
}
在主程序中,我创建了一个GameData指针,并为new分配内存。我知道新的,你也应该删除数据。我的上面的矢量不是指向子弹的指针的向量,只是子弹本身(它们应该是指针吗?)在~GameData()函数中,我需要清除子弹怎么办?我应该确定它是空的,如果不清楚的话?为了良好的内存管理,正确“删除”它的具体方法是什么?如果我的设计有误,请告诉我正确处理此问题的方法。
由于
答案 0 :(得分:5)
在~GameData()函数中,我需要清除项目符号吗?
没有。它由向量的析构函数完成,它将被自动调用。
-
我创建了一个GameData指针并使用new为它分配内存。我知道新的,你也应该删除数据
如果使用某种形式的智能指针(例如std::unique_ptr
或std::shared_ptr
),则不必执行此操作。使用智能指针,您不必删除它,因为它是智能指针本身的责任。
从这里阅读 Smart Pointers 部分:
答案 1 :(得分:3)
您无需担心GamaData
成员,只需确保删除GamaData
个实例,因为您使用new
创建了该实例。