Розуміння збереженої пам’яті у функціях
У контексті функції «зберігає» означає, що функція не звільняє пам’ять, яку вона використовує. Натомість вона зберігає пам’ять і відповідає за її звільнення, коли вона більше не потрібна.
Іншими словами, функція, яка зберігає пам’ять, не повертає пам’ять у купу чи стек після того, як вона закінчила її використання. Це означає, що функція відповідає за керування терміном служби пам’яті, що може бути корисним у певних ситуаціях, але також вимагає ретельного керування, щоб уникнути витоку пам’яті.
Наприклад, розглянемо функцію, яка виділяє пам’ять для великої структури даних, а потім повертає вказівник на цю структуру даних абоненту. Якщо функція не звільнить пам’ять, коли вона більше не потрібна, пам’ять буде збережена функцією, а абонент відповідатиме за її звільнення пізніше. Це може призвести до витоку пам’яті, якщо абонент забуде звільнити пам’ять.
Натомість функція, яка повертає вказівник на пам’ять, виділену в стеку або купі, а потім звільняє пам’ять, коли вона більше не потрібна (тобто ` malloc` і `free`) не зберігає пам'ять. Пам'ять звільняється назад у купу або стек, як тільки функція закінчує її використовувати, тому абоненту не потрібно турбуватися про керування терміном служби пам'яті.



