Поймать std :: bad_alloc на уровне программы или модуля, в точке, где вы можете правильно обработать его, завершив программу или отменив то, что сделал модуль.
На уровне программы :
Добавьте пробную уловку в свой main, отобразите сообщение и выйдите.
На уровне модуля :
Добавьте пробный улов вокруг точки входа DoStuffWhichRequiresALotOfMemory () вашего модуля. Убедитесь, что после того, как std :: bad_alloc брошен, ваша программа все еще находится в допустимом состоянии, f.i. модуль имеет отдельное состояние для остальной части программы или работает без побочных эффектов. Покажите сообщение, и все готово.
Обработка ошибок выделения памяти на таком низком уровне нецелесообразна. Если вам нужны эти гарантии, выделите всю память заранее (для всего модуля, а не только для вашего вектора) и используйте распределитель. Тогда у вас есть только одна точка, где он может потерпеть неудачу.
Я знаю, что это не дает прямого ответа на вопрос, но я призываю вас снова подумать о своей проблеме.