Почему моя программа иногда вызывает segfault, когда не хватает памяти, а не выбрасывает std :: bad_alloc?

У меня есть программа, которая реализует несколько эвристических алгоритмов поиска и несколько областей, предназначенных для экспериментальной оценки различных алгоритмов. Программа написана на C ++, построена с использованием инструментария GNU и работает в 64-битной системе Ubuntu. Когда я запускаю свои эксперименты, я использую bashulimit команда для ограничения объема виртуальной памяти, которую может использовать процесс, чтобы моя тестовая система не начинала подкачку.

Определенные комбинации алгоритма / экземпляра теста достигают предела памяти, который я определил. Большую часть времени программа генерирует исключение std :: bad_alloc, которое выводится обработчиком по умолчанию, после чего программа завершается. Иногда, вместо того, чтобы это происходить, программа просто segfaults.

Почему моя программа иногда вызывает segfault, когда не хватает памяти, вместо сообщения о необработанном std :: bad_alloc и завершения работы?

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

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