Ale podobno pamięć jest automatycznie i tak zwalniana, gdy program kończy działanie
Więc po co to robić
To trochę jak "po co wyrzucać śmieci, jak kiedyś ten dom i tak zostanie zburzony?"
Tak, tak się składa że system zazwyczaj zwalnia całą pamięć zużytą przez proces przy zamykaniu procesu. Ale jeśli kompletnie zignorujesz zwalnianie pamięci, nagle może się okazać że wyciekło Ci kilka gigabajtów, a system nie wie co z nimi zrobić i zwalnia lub zabija procesy by odzyskać trochę zasobów. No a bardziej przyziemnie, nie chcesz żeby user zaczął pytać dlaczego Twoja prosta aplikacja zajmuje mu całą pamięć.
Jest jeszcze jeden ważny aspekt: destruktory. Gdy ręcznie niszczysz dynamiczne obiekty w programie, mogą wywołać się ich destruktory, które mogą wykonywać jakieś ważne czynności (np na systemie plików). Jeśli tego nie zrobisz, system pod koniec po prostu zwolni pamięć i program może nie zostawić po sobie w pełni poprawnego stanu.