1

このコードがリークするかどうか疑問に思っていました:

int main()
{
boost::ptr_vector <char> v;
v.push_back(new char[10]);
v.clear()
}

ptr_vector デストラクタまたは clear() 関数は、含まれているポインタを削除しますか、それとも自分で行う必要がありますか?

4

1 に答える 1

-3

ベクトルのドキュメント (http://www.cplusplus.com/reference/stl/vector/~vector/) から:

ベクトルデストラクタ

コンテナ オブジェクトを破棄します。これにより、含まれている各要素のデストラクタが呼び出され、ベクトルによって割り当てられたすべてのストレージ容量が解放されます。

delete[] は呼び出されないため、リークします。他のコメンターが指摘したように、それを行う STL の方法は他にもあります。

于 2011-02-09T20:48:36.097 に答える