Пытаюсь прочитать большой файл (порядка 700 Мб), для чего выделяю память вызовом функции:
VirtualAlloc(NULL, dwViewSize, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
где
dwViewSize = 0x1000000; // 16 Мб
затем в цикле читаю с помощью ReadFile. Все было бы хорошо, если бы не катастрофическое уменьшение свободной памяти после каждого ReadFile. Это безобразие творится, конечно же, под Windows 98. Вопрос: можно как-нибудь предотвратить сабж?
Код прилагается:
HANDLE hand = CreateFile(aFilename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
LPVOID pAddress = VirtualAlloc(NULL, dwViewSize, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
DWORD dwRead;
while(ReadFile(hand, pAddress, dwViewSize, &dwRead, NULL))
{
// здесь обрабатывю данные ...
}
VirtualFree(pAddress, NULL, MEM_RELEASE);
// ...