URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4646
[ Назад ]

Исходное сообщение
"Выделение памяти в С (FreeBSD)"

Отправлено rostover , 14-Сен-05 17:27 
Делаю такую штуку:
void *test = malloc(1000000);
Почему top показывает неизменное количество свободной памяти?
Почему это самое количество не уменьшается на размер выделенного блока?

Содержание

Сообщения в этом обсуждении
"Выделение памяти в С (FreeBSD)"
Отправлено Av , 14-Сен-05 23:11 
>Делаю такую штуку:
>void *test = malloc(1000000);
>Почему top показывает неизменное количество свободной памяти?
>Почему это самое количество не уменьшается на размер выделенного блока?

Как же не уменьшается, что Вы?
просто Вы не видете, т.к. выделение памяти у Вас идет на этапе инициализации переменных, к примеру попробуйте данную комбинацию и понаблюдайте top:
........
void *test1;
void *test2;

test1=malloc(1000000);
scanf("%s",test1);
test2=malloc(1000000);
scanf("%s",test2);
........


"Выделение памяти в С (FreeBSD)"
Отправлено Av , 14-Сен-05 23:19 
простите не внимательно прочитал :)

управление ограниченным ресурсом - памятью - является одной из важных задач любой ОС. Кол-во неизменной памяти в данном случае остается из-за механизма страничной организации памяти. Грубо говоря процесс имеет этот мег памяти пока! виртуально.


"Выделение памяти в С (FreeBSD)"
Отправлено rostover , 15-Сен-05 10:27 
Спасибо, я примерно так и действовал. Только делал memset на выделенный блок, тогда top все верно отображал.