У багатьох книгах та навчальних посібниках я чув, як підкреслювалась практика управління пам’яттю, і я відчував, що деякі таємничі та страшні речі трапляться, якщо я не звільнить пам’ять після того, як закінчую її використання.
Я не можу говорити про інші системи (хоча мені доцільно припустити, що вони застосовують подібну практику), але принаймні в Windows, ядро в основному гарантовано очищує більшість ресурсів (за винятком непарних кількох), якими користується програма після закінчення програми. До якої належить купа пам’яті, серед іншого.
Я розумію, чому ви хочете закрити файл після того, як ви закінчите його використання, щоб зробити його доступним для користувача або чому ви хочете відключити розетку, підключену до сервера, щоб зберегти пропускну здатність, але це здається нерозумним повинні мікроконтролювати ВСІ вашу пам'ять, яку використовує ваша програма.
Тепер я погоджуюся з тим, що це питання є широким, оскільки те, як ви маєте поводитися зі своєю пам'яттю, ґрунтується на тому, скільки пам’яті вам потрібно, і коли вона вам потрібна, тому я звужу сферу цього питання до цього: Якщо мені потрібно використовувати шматок пам'ять протягом усього життя моєї програми, чи дійсно потрібно звільнити її безпосередньо перед припиненням програми?
Редагувати: Запропонований як дублікат питання стосувався сімейства операційних систем Unix. Його головна відповідь навіть вказала інструмент, характерний для Linux (наприклад, Valgrind). Це питання має на меті охопити більшість "звичайних" невбудованих операційних систем, і чому це - чи не є хорошою практикою звільнення пам'яті, яка потрібна протягом усього життя програми.