HeapAlloc возвращает 0xC0000017: недостаточно квоты

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

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

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

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

2 ответа

Решение

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

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

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

Другие вопросы по тегам