Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2016, 13:55   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию Очистка контейнера

Встретил такую фразу (скрин)

Почему тут сказано что метод clear() не освободит память , хотя практика показывает обратное

http://ideone.com/0zjhXL

5 раз был вызван конструктор и столько же дестр.
Изображения
Тип файла: jpg Безымянный.JPG (34.8 Кб, 35 просмотров)
RAFA91 вне форума Ответить с цитированием
Старый 21.03.2016, 14:01   #2
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
5 раз был вызван конструктор и столько же дестр.
И причем здесь память?
capacity посмотреть никак?
Croessmah вне форума Ответить с цитированием
Старый 21.03.2016, 14:06   #3
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
И причем здесь память?
capacity посмотреть никак?
empty() говорит что пустой после clear()

почему на скрине сказано что память не освобождается ?

что и применение
Код:
v.erase(v.begin(),v.end())
не освободит память ?
RAFA91 вне форума Ответить с цитированием
Старый 21.03.2016, 14:09   #4
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
empty() говорит что пустой после clear()
Потому что вектор пуст. В нем нет объектов.
Но выделенная под объекты память никуда не делась.
Еще раз - capacity смотрите, а не кол-во объектов в векторе.
Цитата:
почему на скрине сказано что память не освобождается ?
Потому что так и есть, так и должно быть.
Цитата:
не освободит память ?
Нет конечно, erase лишь убивает объекты,
память, выделенная под элементы вектора так и остается.
Croessmah вне форума Ответить с цитированием
Старый 21.03.2016, 14:12   #5
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
Еще раз - capacity смотрите, а не кол-во объектов в векторе.

.
посмотрел их 5 как до и после.
Цитата:
Сообщение от Croessmah Посмотреть сообщение
Потому что так и есть, так и должно быть.

.
и кто тогда освободит эту неиспользованную память ?

что сами методы делают утечку ?
RAFA91 вне форума Ответить с цитированием
Старый 21.03.2016, 14:44   #6
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

тогда так

Код:
vector<int>().swap(v1);
или есть другие варианты ?
RAFA91 вне форума Ответить с цитированием
Старый 21.03.2016, 14:46   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну дык а вам что пытался сказать учебник?

Память не освободится пока не уничтожен вектор.

В С++11 есть shrink_to_fit чтоб освободить память
Или заменить на пустой как-то так http://stackoverflow.com/questions/5...nking-a-vector
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.03.2016, 14:57   #8
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
В С++11 есть shrink_to_fit чтоб освободить память
Это лишь просьба, которую вектор вправе проигнорировать.
Croessmah вне форума Ответить с цитированием
Старый 21.03.2016, 15:11   #9
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

На пустой поменял
RAFA91 вне форума Ответить с цитированием
Старый 22.03.2016, 16:06   #10
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Это только с векторами такая кошатина, или со всеми другими аналогичная проблема ?
RAFA91 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выбор контейнера в STL Julia22 Общие вопросы C/C++ 16 17.09.2015 22:03
Реализация контейнера map. fabregas Общие вопросы C/C++ 11 19.04.2013 16:23
Контейнера Sylar9 Общие вопросы C/C++ 2 15.05.2012 15:43
Сортировка контейнера m9yt Общие вопросы C/C++ 0 30.04.2010 23:55