я должен самостоятельно стереть указатель boost :: ptr_vector? - PullRequest
1 голос
/ 09 февраля 2011

Мне было интересно, если эта утечка кода:

int main()<br> {<br> boost::ptr_vector <code><char> v;
v.push_back (новый символ [10]);
v.clear ()
}

Будет ли деструктор ptr_vector или функция clear () удалять содержащиеся в нем указатели или мне придется делать это самому?

1 Ответ

0 голосов
/ 09 февраля 2011

Из векторной документации (http://www.cplusplus.com/reference/stl/vector/~vector/):

Векторный деструктор

Уничтожает контейнерный объект. это вызывает каждый из содержащихся элементов деструкторы, и освобождает все емкость, выделяемая вектор.

delete [] вызываться не будет, поэтому будет течь. И, как отмечали другие комментаторы, есть и другие способы STL сделать это.

...