Другие возможные причины появления std :: bad_alloc

Я работаю над довольно большим приложением SIP-телефонии и иногда, когда мы используем интегрированный веб-интерфейс (написанный с использованием tntnet ) при большой загрузке вызовов программа завершится из-за выброса std :: bad_alloc.Используются сотни потоков (по 3 на активный вызов), поэтому расположение кода, вызывающего исключение, довольно случайное, но всегда после использования графического интерфейса.

Теперь я понимаю, что std :: bad_alloc может быть выброшен при нехватке памяти, что не так в данной ситуации. Я также думаю, что его можно выбросить, когда есть повреждение кучи, которое я все еще ищу, где бы оно ни было в базе кода.

Но мой вопрос: есть ли другие причины, по которым std :: bad_alloc будет выброшен, кроме нехватки памяти или повреждения кучи? Я использую GNU g ++ в Linux.

7
задан Burton Samograd 9 November 2011 в 20:45
поделиться