Распределение может быть неудачным по нескольким причинам. То, что вы делаете (и можете делать) по этому поводу, частично зависит от ошибки выделения.
Быть действительно из памяти катастрофическим. Если вы не составили для этого тщательный план, вы, вероятно, ничего не сможете сделать. (Например, вы могли бы заранее выделить все ресурсы, которые понадобятся вам для аварийного сохранения и завершения работы.)
Но многие ошибки выделения не имеют ничего общего с нехваткой памяти. Фрагментация может привести к сбою выделения из-за недостатка доступного непрерывного пространства, даже несмотря на наличие большого количества свободной памяти. В вопросе конкретно говорится о «малой структуре», так что это, вероятно, так же плохо, как истинное состояние нехватки памяти. (Но код постоянно меняется. Какая небольшая структура сегодня может стать монстром завтра. А если она настолько мала, вам действительно нужна память из кучи или вы можете получить ее из стека?)
В многопоточном мире ошибки распределения часто являются переходными условиями. Ваше скромное выделение может потерпеть неудачу в эту микросекунду, но, возможно, поток с перегрузкой памяти собирается освободить большой буфер. Таким образом, стратегия восстановления может включать задержку и повторную попытку.
То, как (и если) вы обрабатываете ошибку выделения, также может зависеть от типа приложения. Если вы пишете сложный редактор документов, а сбой означает потерю работы пользователя, тогда стоит приложить больше усилий для обработки этих сбоев. Если ваше приложение является транзакционным, и каждое изменение постепенно применяется к постоянному хранилищу, то сбой является лишь незначительным неудобством для пользователя. Тем не менее, регистрация должна быть рассмотрена. Если ваше приложение регулярно получает ошибки выделения, у вас, вероятно, есть ошибка, и вам понадобятся журналы, чтобы узнать о ней и отследить ее.
Наконец, вы должны подумать о тестировании. Сбои в распределении встречаются редко, поэтому вероятность того, что код восстановления был задействован в вашем тестировании, чрезвычайно мала - если вы не предприняли шагов для обеспечения покрытия тестированием путем искусственного принудительного выполнения отказов. Если вы не собираетесь тестировать код восстановления, возможно, его не стоит писать.