1

我有这堂课:

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

在主程序中,我创建了一个 GameData 指针并使用 new 为其分配内存。我知道新的,你也应该删除数据。我上面的向量不是指向子弹的指针向量,只是子弹本身(应该是指针吗?)在〜GameData()函数中,我需要什么来清理子弹?我应该确保它是空的,如果不清除它?为了良好的内存管理,正确“删除”它的具体方法是什么。如果我的设计是错误的,请让我知道我应该如何处理这个问题。

谢谢

4

2 回答 2

5

在 ~GameData() 函数中,我需要什么来清理子弹?

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

-

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

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

从这里阅读智能指针部分:

于 2012-04-20T06:36:11.277 回答
3

您无需担心GamaData成员,只需确保删除您的GamaData实例,因为您使用new.

于 2012-04-20T06:36:03.330 回答