free почему то не удаляет массив из памяти

Обнаружил, что free почему то не удаляет массив из памяти. И когда я с помощью free удаляю 1 массив и потом с помощью malloc создаю другой, при создании новый массив указывает на часть старого массива, как это исправить?


Ответы (1 шт):

Автор решения: Leonid

malloc выделяет определенный объем памяти и гарантирует неполучение другими процессами (как и этим) этого куска памяти. Она не обнуляет хранилище, просто резервирует. free снимает резерв с выделенного с помощью malloc-подобных функций. То есть, после высвобождения с помощью free этим куском памяти могут пользоваться другие. Это и есть освобождение памяти, зачем в этот кусок записывать при это нули (или еще что?).


Для того, чтобы получить "свободную" память, воспользуйтесь calloc

→ Ссылка