Утечка памяти в перегрузке оператора равенства

После написания программы проверил на утечку памяти с помощью valgrind, получил наибольшую проблему в данной части. введите сюда описание изображения

Прилагаю части кода, где возникает наибольшая утечка памяти.

wrapper.cpp:26

containter.push_back(new Simple_Text(buf));

где containter - объект типа list, собирающий в себя указатели на элементы абстрактного класса. Он хранится в классе до вызова функции вывода элементов текста, после которого с начала и до конца происходит обход, вывод и удаление элементов.

simple_text.h:10

Simple_Text(const Text& text) {txt = text;};

Класс Text - аналог класса string, содержащий в себе поле текста wchar_t* str и поле длины текста unsigned int len. Simple_Text - класс абзаца текстового документа, единственным полем которого является Text txt.

text.cpp:26

const Text& Text::operator=(const Text& cpd) {
    len = cpd.len;
    delete[] str;
    str = new wchar_t [len+1];
    for (int i=0; i<len; i++)
        str[i] = cpd.str[i];
    str[len] = L'\0';
    return *this;
};

Где может возникнуть утечка памяти?


Ответы (0 шт):