vector<char*> x;
私のコードには多くのベクトルがあります。ただし、メモリ使用量を最小限に抑えるために、それらを削除する必要があります。「shared_array」を使用するような解決策があることは知っていますが、他のライブラリをインポートすることは許可されていません。ベクトルを使用した後にメモリ リークを防ぐための良い解決策はありますか?
C++11 は などのスマート ポインター オブジェクトをサポートしているため、shared_ptr
Boost (またはその他のもの) を使用する必要はありません。
johnathon が言ったようchar *
に、スマート ポインターでラップするだけで、もう心配する必要はありません。
std::vector<std::unique_ptr<char*>> x;
また
std::vector<std::shared_ptr<char*>> x;
要素がいずれかの方法 ( .delete()
、.erase()
、...) でベクターから削除されるか、単純にベクターが破棄されると、バッファーが解放されます。
STL 実装またはコンパイラがまだこの C++11 機能をサポートしていない場合は、独自のスマート ポインター型をロールすることもできます。それほど難しくはありません。たとえば、このチュートリアルを参照してください。