У меня есть программа, которая реализует несколько алгоритмов эвристического поиска и несколько доменов, предназначенных для экспериментальной оценки различных алгоритмов. Программа написана на С++, построена с использованием инструментальной привязки GNU и запущена в 64-битной системе Ubuntu. Когда я запускаю свои эксперименты, я использую команду bash ulimit
, чтобы ограничить объем виртуальной памяти, которую может использовать процесс, чтобы моя тестовая система не начинала заменять.
Некоторые комбинации экземпляров алгоритма/теста попадают в ограничение памяти, которое я определил. В большинстве случаев программа выдает исключение std:: bad_alloc, которое печатается обработчиком по умолчанию, после чего программа завершается. Иногда, вместо этого, программа просто отключается.
Почему моя программа иногда возникает из-за нехватки памяти, вместо сообщения о необработанном std:: bad_alloc и завершении?