HeapAlloc возвращает 0xC0000017: недостаточно квоты - PullRequest
3 голосов
/ 22 января 2010

Я выделяю небольшое количество типов данных, общий размер 2 МБ.

Я использую только одну кучу, и она работает нормально, пока я не доберусь до определенного количества распределений, я в этом совершенно уверен, потому что я прокомментировал одно выделение, чтобы он аварийно завершал работу на следующем.

Квота = дисковое пространство? документация не охватывает коды ошибок для этой конкретной функции, я профилировал приложение, и для процесса выделено достаточно свободной памяти. Также я ставлю точку останова данных на указатель кучи, и она не ломается. Указатель кучи в порядке, когда я прохожу, вплоть до моего вызова HeapAlloc.

Так странно ..

Ответы [ 2 ]

2 голосов
/ 22 января 2010

Попробуйте выделить большой кусок памяти (т. Е.> 2 МБ), пока не получите ошибку, чтобы определить, является ли проблема количеством объектов или общей кучей. Кроме того, вы уверены, что не выделяете более 2 Мб памяти? Я видел эту ошибку, когда достигнуто ограничение в 2 ГБ, но никогда в 2 МБ, если ваш файл подкачки не заполнен.

Если ничего не помогло, перезагрузите компьютер или попробуйте другой компьютер.

1 голос
/ 22 января 2010

В соответствии с этими значениями в WinNt.h код исключения C0000017 отображается на STATUS_NO_MEMORY, что является одним из исключений, которые будет выдано HeapAlloc . Таким образом, у вас недостаточно памяти или вы переполнили один из выделенных буферов и повредили кучу.

...