170 похожих чатов

Привет всем, подскажите пожалуйста очищает ли erase память после удаления

елемента со списка ?. Если для елемента выделять память через new, нужно вручную освобождать или erase все сделает?

7 ответов

11 просмотров

сам выделил сам и удаляй

Покажи код, тип контейнера.

Konstantin Malovanyk- Автор вопроса
Ilya Zviagin
Покажи код, тип контейнера.

Object* obj = new Object(); std::list <Object *> list; list.push_back(obj);

Konstantin Malovanyk- Автор вопроса
Konstantin Malovanyk
Object* obj = new Object(); std::list ...

Контейнер удаляет автоматически тот объект, которым владеет. Тут объект — указатель на Object . Он будет удалён автоматом. Но то, на что он ссылается — нет, потому что контейнер не владеет этим объектом. Если ты желаешь чтобы Object автоматом удалялся при удалении из контейнера, можно сделать двумя способами: — хранить по значению std::list <Object > list; — хранить умный, владеющий указатель std::list < std::unique_ptr<Object> > list;

Konstantin Malovanyk
Object* obj = new Object(); std::list ...

у тебя контейнер не управляет временем жизни объектов, надо все руками удалять, либо перейти на std::list<std::unique_ptr<Object>> (это рекомендованный вариант)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта