Здравствуйте, King of a Stellar War, Вы писали:
KOA>Кста, там у рихтера было написано:
KOA>WINDOWS 2000
KOA>В Windows 2000 функция VirtualFree не годится для возврата физической памяти, переданной в свос время проецируемому файлу (созданному с флагом SEC_RESERVE).
KOA>А чем тогда возвращять память???
Если честно, я этому замечанию Рихтера не придал значения.. точнее, не заметил его вовсе и поэтому не стал беспокоиться

Я делаю так:
hFileMap=CreateFileMapping((HANDLE)0xFFFFFFFF, //create page file-mapping
NULL, //no security attr
PAGE_READWRITE|SEC_RESERVE, //reserve memory range
0, //high-order size
Size, //low-order size
Name); //file-mapping name
Уже после того, как память зарезервирована, я ее выделяю по сколько нужно:
VirtualAlloc(p, size, MEM_COMMIT, PAGE_READWRITE);
и удаляю вот так:
VirtualFree(p, size, MEM_DECOMMIT);
Не утверждаю, что это единственно правильно и корректно, но это работает
Кстати, при выделении\освобождении памяти неплохо бы еще учитывать ее гранулярность. Дополнительно я завел обертки функций VirtualAlloc и VirtualFree, которые веделяют\освобождают память только постранично (по 4 к).
Вот.
< Rsdn@Home 1.1.4 beta 1 >