Память, выделенная с помощью функций malloc и calloc, не освобождается сама по себе. Следовательно, метод free используется всякий раз, когда происходит динамическое выделение памяти. Это помогает уменьшить потери памяти, освобождая ее.
Как освобождается выделенная память?
В C библиотечная функция malloc используется для выделения блока памяти в куче. Программа обращается к этому блоку памяти через указатель, который возвращает malloc. Когда память больше не нужна, указатель передается функции free, которая освобождает память, чтобы ее можно было использовать для других целей.
Что произойдет, если вы не освободите выделенную память?
В большинстве случаев освобождать память непосредственно перед выходом из программы бессмысленно. ОС в любом случае вернет его. Free коснется и пролистнет мертвые объекты; ОС не будет. Следствие: будьте осторожны с «детекторами утечек», которые подсчитывают аллокации.
Выделяет ли память дорого?
Наивное измерение затрат на выделение и освобождение больших блоков памяти показало бы, что это стоит около 7,5 мкс для каждой пары alloc/free. Однако для больших выделений существуют три отдельные затраты на каждый МБ.
Может ли перераспределить память, если да, то как?
Функция realloc выделяет, перераспределяет или освобождает блок памяти, указанный old_blk, на основе следующих правил: Если old_blk равно NULL, новый блок памяти размером байты являетсявыделено. Если размер равен нулю, вызывается функция free для освобождения памяти, на которую указывает old_blk.