LINUX.ORG.RU

[С] free()


0

1

Здравствуйте, ответьте пожалуйста на мой нубский вопрос:

int *a = malloc(sizeof(int) * 10);
// Манипуляции с массивом...
free(a);
После вызова free из памяти удаляется весь массив или только первый элемент? Если только первый, то как удалить весь?

★★★★★

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

marvin_yorke ★★★
()
3 мая 2012 г.
Ответ на: комментарий от marvin_yorke

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

зависит от реализации аллокатора. либо анонимный mmap либо brk. в случае анонимного mmap память освободит само ядро. в случае brk может быть использован «дефрагментатор».

exception13 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.