12.5: Звільнення пам'яті
- Page ID
- 29511
Після того, як ви закінчите використовувати пам'ять, ви повинні повернути її до вільного пулу пам'яті. Якщо ви цього не зробите, жодна інша програма (ні операційна система) не може використовувати його. Оперативна пам'ять буде ефективно втрачена до перезавантаження системи. Це відомо як витік пам'яті. Щоб повернути пам'ять, яку ви більше не використовуєте, використовуйте free (). Ось прототип:
int free( void *p );
p - покажчик, який ви спочатку отримали від або malloc () або calloc (). Повертається значення функції free () дорівнює 0 для успішного виконання або −1 при помилці. Зазвичай ця функція ніколи не виходить з ладу, якщо їй задано дійсний покажчик. Якщо це не вдається, ви мало що можете зробити з цим (принаймні, не на цьому рівні). Пам'ятайте: кожен блок, який ви виділяєте врешті-решт, повинен бути звільнений! Ви можете задатися питанням, чому функція free () не повинна знати розмір блоку, щоб звільнити. Це тому, що разом з пам'яттю, яку вони передають вам, malloc () і calloc () насправді виділяють трохи більше для використання операційною системою. У цій додатковій пам'яті, яку ви не бачите, зберігаються такі елементи, як розмір блоку. Це економить вам трохи домашнього утримання роботи.
