Estoy intentando anular malloc haciendo esto.Problema al anular malloc
#define malloc(X) my_malloc((X))
void* my_malloc(size_t size)
{
void *p = malloc(size);
printf ("Allocated = %s, %s, %s, %x\n",__FILE__, __LINE__, __FUNCTION__, p);
return p;
}
Sin embargo, esto está llamando indefinidamente my_malloc de forma recursiva (a causa de la llamada malloc dentro my_malloc). Quería llamar a la función C malloc dentro de my_malloc y no a la implementación de macro. ¿Podrías decirme cómo hacer eso?
Gracias.
Tal vez debería cambiar el título en algo más específico. El problema realmente no tiene nada que ver con malloc o overrider, sino con macros de preprocesador y acceder al nombre original. –
Esto no funcionará de la manera que desee: '__FILE__',' __LINE__' y '__FUNCTION__' (la sintaxis C99 sería' __Func__') siempre se expandirá al mismo valor de acuerdo con su ubicación en el archivo que contiene 'my_malloc() '; tienes que ponerlos en tu definición de macro y pasarlos a 'my_malloc()' como argumentos! – Christoph