Destruktor a wyciek pamięci Ważnym zadaniem destruktora jest usuwanie podległych obiektów dynamicznych, które są mu przydzielone. Jeżeli nie zostaną one zwolnione w destruktorze, to dojdzie do tzw. wycieku pamięci. Poniżej przedstawiony został przykład klasy w C++, gdzie brak destruktora spowodowałby wyciek:
class MojaKlasa
public: MojaKlasa() : liczba(new int)
*liczba = 0;
~MojaKlasa()
delete liczba;
private: int *liczba;
Brak destruktora w tym przypadku spowoduje, że zostanie zwolniona pamięć przeznaczona na obiekt, w którym jest między innymi wskaźnik liczba, ale nie zostanie zwolniona pamięć na którą wskazuje liczba, ponieważ ten adres w pamięci nie zawiera się obszarze pamięci zajmowanej przez obiekt klasy MojaKlasa. Domyślna implementacja destruktura nie jest w przypadku klasy MojaKlasa wystarczająca do prawidłowego usunięcia zaalokowanej pamięci.
Powyższy przykład nie jest kompletną klasą, która działałaby prawidłowo w języku C++, gdyż brak jest konstruktora kopiującego i operatora przypisania. Pominięto je ze względu na czytelność przykładu.