Malloc выделяет память из одной из областей виртуальной памяти процесса, называемого Heap.
Каков начальный размер кучи (сразу после начала выполнения и до любого вызова malloc)? Скажем, если Heap начинается с виртуального адреса X и заканчивается виртуальным адресом Y, я хочу знать разницу между X и Y.
Я прочитал ответы на дубликат вопроса, который был задан ранее.
Как работают malloc () и free ()?
Все ответы написаны в контексте виртуального адреса, но я хочу знать, как распределяются физические страницы.
Я не уверен, но я думаю, что этот начальный размер (X-Y) не будет иметь соответствующие записи таблицы страниц в операционной системе. Пожалуйста, поправьте меня, если я ошибаюсь.
Теперь, скажем, есть запрос на выделение (и использование) 10 байтов памяти, будет выделена новая страница. Тогда все дальнейшие запросы на память будут удовлетворены с этой страницы или каждый раз, когда будет выделена новая страница? Кто решит это?
Когда память будет освобождена (используя free ()), в какое время эта выделенная физическая страница будет освобождена и помечена как доступная? Я понимаю, что виртуальный адрес и физическая страница не будут освобождены сразу, так как объем свободной памяти может быть очень меньше. Тогда в какое время соответствующая связь между физическим и виртуальным адресом будет прервана?
Извините, если мои вопросы могут показаться странными. Я просто новичок и пытаюсь понять внутренности.