Пусть у меня есть следующая функция:
int func(void)
{
std::vector<int> vec1;
vec1.push_back(10);
std::vector<int> vec2(vec1.begin(), vec1.end() );
return 0;
}
Как я понимаю после вызова vec1 и vec2 освобождаются из стэка, как локальные переменные. А освобождается ли куча от массивов, на которые указывают vec1 и vec2 ?
Память, выделенная под хранение элементов вектора, освобождается, т.к. деструктор локальных объектов вызывается автоматически при выходе из метода
RAII:
The C++ library classes that manage their own resources follow RAII: std::string, std::vector, std::thread, and many others acquire their resources in constructors (which throw exceptions on errors), release them in their destructors (which never throw), and don't require explicit cleanup.
Деструктор объекта вектор:
Уничтожает контейнер. После вызова деструктора высвобождается используемая память. Обратите внимание, что если элементы являются указателями, объекты, на которые они указывают не уничтожаются.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости