| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > ? Выделить страницу памяти в указанном диапазоне. |
| Автор: Чучмек 29.7.2011, 10:51 | ||
| Необходимо выделить страницу памяти с заранее указанным старшим байтом адреса. Тобиш, например, в диапазоне $1A000000-$1AFFFFFF Задачу решил простым перебором всех страниц в диапазоне:
Вопрос в том - возможно ли обойтись без перебора. Запросив у системы наличие свободного адрессного пространства в регионе? И еще, Для диапазона $00000000-$00FFFFFF функция возвращает страницу $00a30000 и с флагом MEM_COMMIT, и MEM_RESERVE or MEM_COMMIT. (XP-ха) Как такое может быть??? Если адресное пространство зарезервированно - Почему тогда страница выделяется с флагом MEM_RESERVE or MEM_COMMIT ? Если - не зарезервированно - Почему с только одним MEM_COMMIT??? |
| Автор: Чучмек 30.7.2011, 15:12 | ||
| ага,спасибо,я просто не дочитал(не внимательно прочитал) про эту функцию. Но какое значение VirtualQuery должна возвращать для свободной страницы? Для уже выделенной страницы VirtualQuery возвращает MEM_FREE
Функция выделяет одну страницу, а при повторном вызове вызывает VirtualAlloc для того же адреса |