malloc
возвращает NULL, если это не удалось. Вы должны справиться с этим и другими сбоями функций памяти CRT (особенно легко ошибиться realloc
).
В общем случае, я думаю, вам придется обернуть все использование памяти ЭЛТ в свои собственные функции для перенаправления при ошибке.
В Windows вы можете подключиться к ЭЛТ, используя Функции перехвата выделения , которые могут быть способом сделать то, что вы хотите. Это дает вам возможность обработать вызовы CRT с помощью логики для onalloc
, onrealloc
, onfree
, эффективно.
Я не даю никаких гарантий, так как я работаю в Windows, но похоже, что malloc_hook в Linux предлагает то же, что позволяет ловушка Windows. Эти методы должны позволить вам захватывать все вызовы памяти CRT без изменения кода в сторонних библиотеках, при условии, что они все используют один и тот же CRT во время выполнения - всегда хорошая идея, но не гарантируется, по крайней мере, в Windows ...