64-битные большие malloc

Каковы причины сбоя malloc (), особенно в 64-битной версии?

Моя конкретная проблема заключается в попытке распределить огромный объем 10 ГБ ОЗУ в 64-битной системе. Машина имеет 12 ГБ оперативной памяти и 32 ГБ подкачки. Да, malloc является экстремальным, но с чем это может быть проблемой? Это в Windows XP64 с компиляторами Intel и MSFT. Malloc иногда успешно, иногда нет, около 50%. Mallocs 8GB всегда работают, malloc 20GB всегда терпят неудачу. Если malloc завершается неудачно, повторные запросы не будут работать, если я не выйду из процесса и не начну новый процесс заново (в этом случае результат будет на 50% успешным). Другие большие приложения не работают. Это происходит даже сразу после свежей перезагрузки.

Я мог бы представить, что malloc завершится с ошибкой в 32 битах, если вы израсходовали 32 (или 31) бит доступного адресного пространства, так что нет диапазона адресов, достаточно большого для назначения вашему запросу.

Я также мог представить, что malloc не работает, если вы израсходовали физическую памятьа также место на жестком диске Это не так для меня.

Но почему еще может выйти из строя malloc? Я не могу думать о других причинах.

Меня больше интересует общий вопрос о malloc, чем мой конкретный пример, который я, скорее всего, заменю файлами с отображением в памяти. Неудачный malloc () - это всего лишь головоломка, чем все остальное ... которое хочет понять ваши инструменты и не удивляться основам.

Ответы на вопрос(9)

Ваш ответ на вопрос