Освободить блок памяти в куче

В настоящее время я работаю над школьным проектом и пытаюсь понять, что стоит за free() функция.

malloc выделит блок в куче. Если мы хотим освободить этот блок, будет ли этот блок полностью установлен на '0' значения (с использованием brk)

или же

будет ли он установлен только как "доступный", чтобы разрешить его удаление (замена данных...)

2 ответа

free только освобождает память, но не заполняет ее 0-s.
После его освобождения запись или чтение из этой памяти приведет к неопределенному поведению.

В дополнение к ответу @Viktor Simkó free удалит заголовок и добавит его обратно в список свободной памяти. Если он образует больший блок с окружающими свободными блоками, они будут добавлены вместе, чтобы получить больший блок, когда пользователь требует большего блока. Если вся страница теперь свободна, распределитель, скорее всего, вернет страницу в ОС.

Для получения дополнительной информации посмотрите, как работают malloc() и free()?

Другие вопросы по тегам