Да, новый может и скинет.
Поскольку вы спрашиваете о «настоящих» программах: я работаю над различными коммерческими приложениями в термоусадочной пленке более 20 лет. «Реальные» программы с миллионами пользователей. Это вы можете пойти и купить с полки сегодня. Да, новый может бросить.
Существуют различные способы справиться с этим.
Сначала напишите свой собственный new_handler (он вызывается до того, как new сдается и бросает - см. Функцию set_new_handler ()). Когда ваш new_handler вызывается, посмотрите, сможете ли вы освободить некоторые вещи, которые вам на самом деле не нужны. Также предупредите пользователя, что ему не хватает памяти. (да, может быть сложно предупредить пользователя о чем-либо, если вы действительно низкий).
Одна вещь - это предварительно выделить при запуске вашей программы некоторую «дополнительную» память. Когда вам не хватает памяти, используйте эту дополнительную память, чтобы помочь сохранить копию документа пользователя на диск. Тогда предупредите и, возможно, выйдите изящно.
Etc. Это просто обзор, очевидно, это еще не все.
Работать с малым объемом памяти непросто.