と、ヒープ上のクリーンアップクラスへの適切な方法は、私はこのクラスを持っています。私は新しく知っている、あなたも同様にデータを削除する必要があります。上記の私のベクトルは、箇条書きへのポインタのベクトルではなく、単に箇条書きそのもの(ポインタであるべきか?)〜GameData()関数では、箇条書きのクリーンアップには何が必要ですか?私はそれが空であることを確認するべきですか?適切なメモリ管理のために適切に「削除」する具体的な方法は何ですか?私のデザインが間違っているなら、私がこれを取り扱うべき正しい方法を教えてください。C++ベクトル
おかげ
@Alsを。 'vector'は、標準ライブラリのすべてのコンテナと同様、バリュー・セマンティクスを持っています。ベクトル内のオブジェクトは、それらがベクトルのメンバーであるかのように動作し、オブジェクトがベクトル内に存在しなくなると、正しく破棄されます。 –
@JamesKanze:真。しかし、標準ライブラリコンテナでは、ポインタメンバー(生またはスマート)の所有権は取られません。ダイナミックメモリの割り当てを解除する責任は、ユーザまたはビルドされたRAIIセマンティクス(スマートポインタの場合)に依存します。コンテナにはポインタ要素の所有者に関する知識がないため、コンテナの観点からは意味があります。そのことについて割り当てがフリーストア上にあるかどうかも分かりません。 –
@Alsそれは、「所有権」は人工的な概念であり、まれには何にも関連しないからです。コンテナ内のオブジェクトはコンテナによって「所有されていません」、論理的にコンテナの一部です。他のクラスに関してコンテナに関する唯一の特殊性は、その一部であるオブジェクトの数が動的に変更できることです。オブジェクトにポインタ型がある場合はもちろん、ポインターはコンテナの一部であり、ポインターは指し示すものではありません。 –