Из этой лекции из Университета Саймона Фрейзера я понимаю, что каждый процесс получает виртуальное адресное пространство, выделенное ему операционной системой. Вот гипотетический вопрос, основанный на этом. Предположим, что для программы выделено виртуальное адресное пространство от 100 до 200. Теперь стек увеличивается с 200 вниз и накапливается, скажем, с 120 вверх. Теперь, если программе требуется больше места, будет ли ОС выделять адрес примерно от 400 до 900, а затем копировать данные из старого адресного пространства в новое?
1 ответ
1
Стек растет, а куча растет, пространство между ними называется «дырой». Обычно разреженные адресные пространства используются, чтобы оставить дыры для роста и DLL. Обычно ОС хорошо изначально выделяет необходимое количество места, но если я вспомню в системе подкачки по требованию, ей придется заменить страницу. Как это сделать, зависит от того, какой алгоритм используется (есть несколько). Это даст программе больший кадр виртуальной памяти для работы, так что в общих чертах ваш правильный.