В разделе кода ниже, какова будет структура памяти после обмена? Будет ли утечка, потому что они поменяли местами адрес памяти? Было бы хорошо, потому что они сделали глубокую копию? что, если этот код застрял внутри класса, и я менял рабочий буфер с куском динамической памяти?std :: векторный указатель с обменом данными
#include <iostream>
#include <vector>
int main()
{
std::vector<std::string> * ptr_str_vec =
new std::vector<std::string>();
ptr_str_vec->push_back("Hello");
std::vector<std::string> str_vec;
str_vec.push_back("World");
ptr_str_vec->swap(str_vec);
delete ptr_str_vec;
//What would be the resulting structures?
return 0;
}
РЕДАКТИРОВАТЬ: Отмечено немного неисправного кода. Исправлены ошибки.
Существует утечка, потому что вы «что-то новое» и не вызывали 'delete'. – juanchopanza
Предполагая, что существует удаление для ptr_str_vec, есть ли еще утечка? – MagikWorx
Вы, очевидно, пробовали это под отладчиком и сами видели ответ. Каков реальный вопрос? –