W wielu książkach i samouczkach słyszałem, jak zaakcentowano praktykę zarządzania pamięcią i czułem, że wydarzyłyby się jakieś tajemnicze i okropne rzeczy, gdybym nie zwolnił pamięci po jej użyciu.
Nie mogę mówić za innymi systemami (chociaż dla mnie rozsądnie jest założyć, że stosują one podobną praktykę), ale przynajmniej w systemie Windows jądro ma zasadniczo gwarancję wyczyszczenia większości zasobów (z wyjątkiem kilku nieparzystych) używanych przez program po zakończeniu programu. Który obejmuje między innymi pamięć sterty.
Rozumiem, dlaczego chcesz zamknąć plik po zakończeniu korzystania z niego, aby udostępnić go użytkownikowi lub dlaczego chcesz odłączyć gniazdo podłączone do serwera w celu zaoszczędzenia przepustowości, ale wydaje się głupie muszę zarządzać Całą pamięcią używaną przez program.
Teraz zgadzam się, że to pytanie jest szerokie, ponieważ sposób, w jaki powinieneś obchodzić się z pamięcią, zależy od tego, ile pamięci potrzebujesz i kiedy jej potrzebujesz, więc zawęzię zakres tego pytania do tego: jeśli potrzebuję użyć pamięć przez cały okres użytkowania mojego programu, czy naprawdę konieczne jest zwolnienie go tuż przed zakończeniem programu?
Edycja: Pytanie zasugerowane jako duplikat dotyczyło rodziny systemów operacyjnych Unix. Jego najwyższa odpowiedź określa nawet narzędzie specyficzne dla Linuksa (np. Valgrind). To pytanie ma na celu objąć większość „normalnych” niewbudowanych systemów operacyjnych i dlaczego jest lub nie jest dobrą praktyką zwalnianie pamięci, która jest potrzebna przez cały okres życia programu.