Ваша проблема в том, что ваш #define
для malloc
вызывается вашим my_malloc
, когда вы ожидаете, что будет вызван реальный malloc
.Причина этого в том, что препроцессор также преобразовал malloc
в my_malloc
.
Если мы просто предварительно обработаем следующее:
#define malloc(size) my_malloc(size)
unsigned int memCount = 0;
void *my_malloc(size_t size) {
void *p = malloc(size);
memCount = memCount + size;
printf("Memory Allocated :%zu \n", size);
return p;
}
int main(void) {
malloc(123);
return EXIT_SUCCESS;
}
Вы действительно получите:
unsigned int memCount = 0;
void *my_malloc(size_t size) {
void *p = my_malloc(size);
memCount = memCount + size;
printf("Memory Allocated :%zu \n", size);
return p;
}
int main(void) {
my_malloc(123);
return 0;
}
Вам необходим доступ к реальному malloc
, который демонстрируется здесь .