Я могу дать конкретную версию для Linux (может быть, POSIX): __malloc_hook, __realloc_hook, __free_hook. Они объявлены в malloc.h.
РЕДАКТИРОВАТЬ: небольшая проработка: это указатели на функции (точную декларацию см. На malloc.h и их man-странице), но будьте осторожны: это не совсем стандарты, а только расширения GNU. Так что, если переносимость является проблемой, не используйте это.
Чуть менее зависимым от платформы решением может быть объявление макроса malloc. Если вы тестируете, это вызывает хук и настоящий malloc.
memhook.h:
#define malloc(s) (my_malloc(s))
memhook.c:
#include "memhook.h"
#undef malloc
#include <stdlib.h>
и т.д.
Вы можете использовать это для обнаружения утечек, случайного сбоя при распределении и т. Д.