dwAllocationGranularity & alignment
От: McSeem2 США http://www.antigrain.com
Дата: 06.03.09 22:26
Оценка:
GetSysInfo() позволяет узнать dwAllocationGranularity и dwPageSize. Вопрос в том, каков алаймент гарантирован? PageSize или AllocationGranularity? Как я понимаю, если PageSize=4K, а AllocationGranularity=64K то VirtualAlloc с флагом MEM_COMMIT при запросе в 4K все равно даст 64K. Это так? Если так, то алаймент должен быть гарантирован на 64K. Я посмотрел, какие адреса он возвращает — всегда младшие 16 бит — нули, то есть выровнено на AllocationGranularity. Но уверенности в этом нет. А чтобы оперировать со страницами в 4K требуется уже вручную разруливать ситуацию с MEM_RESERVE, MEM_COMMIT и MEM_DECOMMIT.

То есть, вызов ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);

Какой алаймент железно гарантирован в ptr? dwAllocationGranularity или dwPageSize?
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.