E da cosa ti accorgi che non è invocato?
Hai provato a mettere un cout nel distruttore per verificarlo?
Ricorda che il sistema operativo è libero di posticipare il rilascio della memoria. Quello che fai tu è dire al sistema operativo che le aree di memoria prese in prestito non ti servono più, ma lui può farne quel che vuole.