Почему malloc всегда возвращают ПУСТОЙ УКАЗАТЕЛЬ

Моя dev среда является VS2008, DX9, Windows XP. Я пытаюсь добавить обработку защиты к из случая памяти. Когда malloc возвращают ПУСТОЙ УКАЗАТЕЛЬ, я разбил бы на страницы некоторый ресурс к диску и высвободил бы средства в памяти.

Но иногда, malloc всегда возвращают ПУСТОЙ УКАЗАТЕЛЬ, даже если я высвобождаю большинство средств и обрабатываю использование памяти, и размер VM составляет только 800 МБ в диспетчере задач.

Я думаю для использования malloc для выделения 88 байтов, должен быть прекрасным, где использование памяти процесса составляет только 800 МБ. Но malloc всегда возвращают ПУСТОЙ УКАЗАТЕЛЬ.

Это могло быть фрагментацией памяти? Не похоже, что, так как использование памяти процесса не слишком много.

сопроводительный текст http://i.imagehost.org/0267/Snap2.jpg

6
задан Buzz 2 March 2010 в 07:43
поделиться

3 ответа

Возможно, это фрагментация виртуального адресного пространства. Один из способов проверить - вызвать HeapCompact (GetProcessHeap (), 0) . Если это освобождает достаточно памяти, то это вероятная причина.

Другой подобной причиной может быть запуск из отладчика; это приводит к тому, что Windows использует кучу отладки, которая в течение длительного периода времени действительно плохо ведет себя с памятью. Чтобы отключить это поведение, установите в среде _NO_DEBUG_HEAP = 1 и запустите.

2
ответ дан 17 December 2019 в 07:03
поделиться

Вы упомянули фрагментацию памяти, и это, безусловно, мое первое предположение. Попробуйте загрузить это приложение. Он называется Монитор адресного пространства и должен показать вам, является ли это проблемой фрагментации.

2
ответ дан 17 December 2019 в 07:03
поделиться

Другая возможность состоит в том, что в вашей программе может быть ошибка. Вы думаете, что запрашиваете 88 байтов, но, возможно, вы передаете неинициализированную переменную и запрашиваете сотни мегабайт. Или, может быть, что-то, что вы сделали раньше, привело к переполнению буфера и повреждению кучи, в результате чего malloc () после этого потерпел неудачу навсегда.

0
ответ дан 17 December 2019 в 07:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: