Утечка памяти в перегрузке оператора равенства
После написания программы проверил на утечку памяти с помощью 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;
};
Где может возникнуть утечка памяти?