1
vector<char*> x;

私のコードには多くのベクトルがあります。ただし、メモリ使用量を最小限に抑えるために、それらを削除する必要があります。「shared_array」を使用するような解決策があることは知っていますが、他のライブラリをインポートすることは許可されていません。ベクトルを使用した後にメモリ リークを防ぐための良い解決策はありますか?

4

3 に答える 3

2

C++11 は などのスマート ポインター オブジェクトをサポートしているため、shared_ptrBoost (またはその他のもの) を使用する必要はありません。

johnathon が言ったようchar *に、スマート ポインターでラップするだけで、もう心配する必要はありません。

std::vector<std::unique_ptr<char*>> x; 

また

std::vector<std::shared_ptr<char*>> x; 

要素がいずれかの方法 ( .delete().erase()、...) でベクターから削除されるか、単純にベクターが破棄されると、バッファーが解放されます。

STL 実装またはコンパイラがまだこの C++11 機能をサポートしていない場合は、独自のスマート ポインター型をロールすることもできます。それほど難しくはありません。たとえば、このチュートリアルを参照してください。

于 2012-05-05T20:04:59.810 に答える