Якщо ви просто виділяєте частину пам’яті за допомогою malloc() один раз, вам не потрібно її звільняти()., оскільки після завершення програми пам’ять автоматично звільняється для вас. Поки початковий malloc() не наблизився до використання всієї доступної фізичної оперативної пам’яті, проблем не буде.10 лютого 2019 р.
І вказівник ptr містить адресу першого байта у виділеній пам’яті. Але виділення пам’яті за допомогою malloc() не вилучається самостійно. Таким чином, метод “free()” використовується для звільнення пам’яті. Але використання методу free() не є обов’язковим.
Важливо зауважити, що malloc() повертає NULL, якщо виділення пам’яті не вдалося. Пам'ять, виділену за допомогою malloc(), має бути явно звільнена, щоб уникнути витоку пам'яті в програмі.
Malloc() & Free() malloc() повертає перший вказівник на суміжні пробіли. Ми можемо звільнити те саме місце дзвонити безкоштовно(). Зверніть увагу, що free() звільняє ті самі місця, які ви виділяєте. Тобто, якщо ви виділяєте 64 байти в 0x10, ви можете викликати free(0x10), щоб звільнити 64 байти — ви не можете викликати free(0x14).
Ви можете використовувати malloc() і new в одній програмі. Але ви не можете виділити об’єкт за допомогою malloc() і звільнити його за допомогою delete .
Кожен malloc має відповідний безкоштовний код. Звільнення пам'яті від купи є відповідальністю програміста. Звичайно, сучасні операційні системи автоматично звільняють будь-яку використану пам’ять після завершення програми, але це, тим не менш, хороша практика.