Destruktor jest natomiast funkcją, którą wykonuje się w celu zwolnienia pamięci przydzielonej dodatkowym obiektom lub innych zasobów.
Najczęstszą funkcją destruktora jest zwolnienie pamięci (zwykle poprzez zniszczenie wszystkich pól używanych przez ten obiekt).
Destruktor ma za zadanie wykonać czynności składające się na jego "zniszczenie", inne niż zwolnienie pamięci zajmowanej przez sam obiekt, a przygotowujące obiekt do fizycznego usunięcia. Po jego wykonaniu obiekt znajduje się w stanie osobliwym i zazwyczaj nie można już z tym obiektem zrobić nic poza fizycznym usunięciem. Destruktor zwykle wykonuje takie czynności, jak zamknięcie połączenia z plikiem/gniazdem/potokiem, wyrejestrowanie się z innych obiektów, czasem również zanotowanie faktu usunięcia, a także usunięcie obiektów podległych, które obiekt utworzył lub zostały mu przydzielone jako podległe (jeśli jest ich jedynym właścicielem), lub wyrejestrowanie się z ich użytkowania (jeśli są to obiekty przezeń współdzielone).