Один из способов - написать обертку вокруг malloc ().
static unsigned int requested =0;
void* my_malloc(size_tamount){
if (requested + amount < LIMIT){
requested+=amount;
return malloc(amount);
}
return NULL
}
Вы можете использовать #define для перегрузки вашего malloc.
Как заявляет GMan, вы также можете перегрузить операторы new / delete (для случая C ++).
Не уверен, что это лучший способ или то, что вы ищете