Из проблемы памяти

Я запускаю программу C++ в Ubuntu 10.04 (32-разрядная архитектура системы). Если я вычисляю объем памяти, который использует моя программа, это подходит к 800 МБ. Я имею в распоряжении 4 ГБ RAM. Но все еще прежде чем программа даже заканчивается, она бросает из исключения памяти. Почему это происходит? Это из-за структуры памяти или проблем реализации или что могло возможно инициировать эту проблему? Я имел замеченный это проблемное множество времен прежде, но никогда не понимал причины позади него. Какой-либо из Вас обработал этот случай прежде?

Обновление:

Программа, которую я пытаюсь запустить, здесь с объяснением. Для увеличения объема памяти, я использую I просто icrease значение max_i в основной функции.

0
задан 23.05.2017, 15:41

2 ответа

Вещи, которые могли пойти не так, как надо:

  • Система не может дать Вам X байты contineous памяти. Позволяет говорят, что Вы хотите блок 512 МБ, но система не может найти такое большое, contineous блок. Затем Вы не повезли и доберетесь "из памяти" исключение

  • Вы неверно рассчитываете объем памяти, в котором на самом деле нужна Ваша программа. Действительно ли Вы освобождаете неиспользованную память? Вы вычисляли издержки для некоторых структур (выравнивание ключевого слова) правильно?

  • У Вас есть достаточно большой своп-файл, таким образом, система может выгрузить другие процессы?

0
ответ дан 27.11.2019, 18:16

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

Вы выделяете тысячи маленьких блоков памяти или несколько больших непрерывных блоков и т.д...

Вопрос граничит с stackoverflow пригодностью IMO.

Поскольку другие парни предполагают, что Вы находитесь в среде на 32 бита, и Ваш процесс мог изо всех сил пытаться выделить большой блок в одном хите. Но, я просто размышляю без большего количества деталей.

0
ответ дан 27.11.2019, 18:16

Теги

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