Катастрофическое уменьшение свободной памяти
От: Thrush  
Дата: 03.07.03 11:41
Оценка:
Пытаюсь прочитать большой файл (порядка 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);
// ...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.