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
Я жертва цепи несчастных случайностей. Как и все мы.