è vero in C++ devi ricordarti di rilasciare gli oggetti, in modo da liberare la memoria.
Ecco allora che salta fuori il garbage collector che ti risolve il problema eliminando la necessità di liberare manualmente la memoria.
Quindi in C# e Java non devo più chiamare delete. Solo che alcune risorse allocate dagli oggetti devono comunque essere rilasciate.
Allora è buona pratica creare una funzione membro adhoc (dispose) e richiamarla quando le risorse allocate devono essere rilasciate.
Cioè in pratica torno alla situazione del C++, devo ricordarmi di rilasciare le risorse. Eh ma non la memoria, di quella se ne occupa il GC!!!

Che progresso del cazzo.