1

私はこのクラスを持っています:

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

メイン プログラムでは、GameData ポインターを作成し、new でメモリを割り当てます。私は新しいことを知っています。データも削除する必要があります。上記の私のベクトルは、弾丸へのポインターのベクトルではなく、弾丸自体です (ポインターである必要がありますか?) ~GameData() 関数で、弾丸をクリーンアップするには何が必要ですか? 空であることを確認する必要がありますか?そうでない場合はクリアしますか?適切なメモリ管理のために適切に「削除」する具体的な方法は何ですか。私の設計が間違っている場合は、これを処理する適切な方法を教えてください。

ありがとう

4

2 に答える 2

5

〜GameData()関数で、弾丸をクリーンアップするために何が必要ですか?

いいえ。自動的に呼び出されるベクトルのデストラクタによって実行されます。

-

GameDataポインタを作成し、newを使用してメモリを割り当てます。私は新しいことを知っています、あなたもデータを削除する必要があります

std::unique_ptrまたはなどの何らかの形式のスマートポインタを使用する場合は、これを行う必要はありませんstd::shared_ptr。スマートポインタを使用すると、スマートポインタ自体の責任であるため、削除する必要はありません。

ここからスマートポインタのセクションを読んでください:

于 2012-04-20T06:36:11.277 に答える
3

メンバーについて心配する必要はありません。インスタンスは。で作成するため、GamaData必ず削除してください。GamaDatanew

于 2012-04-20T06:36:03.330 に答える