Element* prevEl;
T infoVal;
public:
Element(T data) {
nextEl = prevEl = NULL;
infoVal = data;
}
~Element() {
delete &infoVal;
}
}Вот запускаю код
Album * al = new Album();
Element<Album> * el = new Element<Album>(*al);
delete el;В деструкторе класса Album прописан вывод текста. При запуске кода информация выводится три раза. Первый раз, видимо, когда удаляется параметр data, второй раз потому, что я сам вызываю его через delete. А откуда берется третий раз?
Так делать нельзя, delete может быть использован только к памяти, выделенной через new Когда вы передаете al в конструктор, он копируется, при этом для самого объекта al никогда не зовется delete и он благополучно утекает
Обсуждают сегодня