LINUX.ORG.RU

google: stl clear, первая ссылка:

Clear content
All the elements of the vector are dropped: their destructors are called, and then they are removed from the vector container, leaving the container with a size of 0.

mv ★★★★★
()

Элементы, естественно, удаляются, а вот гарантировать очистку памяти никто не может. Чтобы очистить, например, вектор полностью надо воспользоваться трюком:

vector < double > bigvector;
...
{
   vector < double > tmp;
   tmp.swap(bigvector);
}
Reset ★★★★★
()
Ответ на: комментарий от Reset

Элементы, естественно, удаляются, а вот гарантировать очистку памяти никто не может. Чтобы очистить, например, вектор полностью надо воспользоваться трюком:

Что подразумевается под 'очисткой памяти'?

bibi
()
Ответ на: комментарий от lester

освободить занятую память

Тогда я не понимаю, почему разрушение контейнера не влечет за собой освобождение ассоциированной с ним памяти :-? А куда она, память, девается? Течет?

bibi
()
Ответ на: комментарий от bibi

> А куда она, память, девается? Течет?

а когда reserve вызываешь - куда она девается?

lester ★★★★
()
Ответ на: комментарий от namezys

гарантированная очистка будет при удалении объекта

А, да, пропустил clear(). Тогда само собой, никто не гарантирует, что память будет освобождена. Впрочем, где-то может и будет - хбз. Зависит от конкретной реализации.

bibi
()
Ответ на: комментарий от bibi

Блин. Еще раз.

Деструктор гарантировано выполняет clear. Кроме того, освобождает занимаемую массивом память

при очисти это не обзятельно происходит. Ибо вектор может занимать памяти больше, чем элементов в нем

namezys ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.