Я нашел следующее предложение в книге:
Всякий раз, когда диспетчеру кучи не хватает выделенного пространства в сегменте кучи, он
явно выделяет больше памяти и делит вновь выделенное пространство на блоки
по мере того, как все больше и больше ресурсов запрашиваются
Означает ли это, что когда в сегменте выделяется блок, виртуальная память, используемая пользователем, и метаданные больше не считаются зафиксированными?
Это из расширенной книги по отладке Windows, я не понимаю, что вы имеете в виду, так как к концу вы становитесь немного расплывчатыми, но в основном это означает следующее:
Когда вы выделяете пространство кучи, содержимое кучи не обязательно предопределено, поэтому вы можете использовать это выделенное пространство по своему усмотрению: например, я выделяю 1 мегабайт памяти кучи, а затем решаю заполнить это пространство только 512 Кб или данных, это будет означать, что я выделил половину своей выделенной кучи, оставив еще 512 Кб свободными Эта память будет по-прежнему отображаться как используемая для ОС, поскольку я явно установил выделение кучи равным 1024 КБ, однако в следующий раз, когда я использую то же пространство, я мог бы использовать больше или меньше, чем 512 КБ, использованных в прошлый раз, вплоть до того количества, которое у меня есть. выделено для использования. Сумма, которую вы используете в данный момент, является коммитом, а сумма, которую вы откладываете, является распределением.
Все это сильно упрощено, и я бы порекомендовал прочитать такие источники, как:
Хорошие источники для начала работы с памятью и ее использованием в C ++.
Если есть что-то конкретное или более подробное, о чем вы можете подумать (ваш вопрос немного неясен), то дайте мне знать, и я свяжусь с вами как можно скорее.
Нет. Выделенные блоки являются частью выделенной памяти.