Является ли следующий код C++ утечкой памяти?
list.push_back(new String("hi"));
Насколько я понимаю, push_back из любой стандартной коллекции/контейнера всегда делает копию. Итак, если новая строка скопирована, ничто никогда не сможет удалить новую строку, верно? так как после push_back на него нет ссылки...
Я прав или неправ здесь?
Спасибо.
Джбу
edit: я думаю, что ошибаюсь, так как new вернет указатель... у нас всегда будет указатель, чтобы иметь возможность удалить новую строку
list
. - person Steve Townsend   schedule 24.11.2010list
. Предполагая, что этоstd::list<String*>
, @UncleBens прав: большую часть времени все еще можно правильно очистить. Но вы должны сделать эту очистку вручную;std::list
не будет делать это за вас. - person aschepler   schedule 24.11.2010