Я использую Visual Leak Detector, и он говорит, что у меня есть утечка памяти, когда я добавляю объект к vector<unique_ptr<Worker>> Workers
.Утечка памяти при добавлении объекта в вектор <unique_ptr <Type>>
Я получил базовый класс с именем Worker
с закрытым именем поля и одним производным классом Builder
с частными кирпичами.
Вот как я добавляю новый объект в vector Workers
.
Builder b = Builder(name, stoi(bricks));
Workers.push_back(make_unique<Builder>(b)); // this is the line with memory leak
Можете ли вы сказать мне, что следует делать, чтобы предотвратить утечку памяти в этом случае?
EDIT:
Я освобождаю память вектора, как это:
vector<unique_ptr<Worker>>().swap(Workers);
Реализация Worker & Builder
Worker::Worker(string name)
{
this->_name = name;
}
деструктор работника является пустым.
Worker::~Worker()
{
}
Builder::Builder(string name, int bricks) : Worker(name)
{
this->_bricks = bricks;
}
И деструктор Builder пуст.
Builder::~Builder()
{
}
Есть ли у 'Worker'' виртуальный деструктор? – Praetorian
Можете ли вы показать реализации 'Worker' &' Builder' –
Деструктор рабочего пуста пуст, так как есть только private: string name; –