Делаю такую штуку:
void *test = malloc(1000000);
Почему top показывает неизменное количество свободной памяти?
Почему это самое количество не уменьшается на размер выделенного блока?
>Делаю такую штуку:
>void *test = malloc(1000000);
>Почему top показывает неизменное количество свободной памяти?
>Почему это самое количество не уменьшается на размер выделенного блока?Как же не уменьшается, что Вы?
просто Вы не видете, т.к. выделение памяти у Вас идет на этапе инициализации переменных, к примеру попробуйте данную комбинацию и понаблюдайте top:
........
void *test1;
void *test2;test1=malloc(1000000);
scanf("%s",test1);
test2=malloc(1000000);
scanf("%s",test2);
........
простите не внимательно прочитал :)управление ограниченным ресурсом - памятью - является одной из важных задач любой ОС. Кол-во неизменной памяти в данном случае остается из-за механизма страничной организации памяти. Грубо говоря процесс имеет этот мег памяти пока! виртуально.
Спасибо, я примерно так и действовал. Только делал memset на выделенный блок, тогда top все верно отображал.