Define malloc as a macro.
main.c
Code:
#include "debug.h"
#include <stdlib.h>
#define DEBUG
int main()
{
char *test = (char*)malloc(1);
free(test);
}
debug.h
Code:
#ifndef DEBUG_H
#define DEBUG_H
#ifdef DEBUG
#define malloc(b) debug_malloc(b)
#define free(m) debug_free(m)
#endif
void *debug_malloc(size_t);
void debug_free(void*);
bool unfreed_memory();
#endif
debug.c
Code:
#include "debug.h"
#include <stdlib.h>
static int allocs = 0;
void *debug_malloc(size_t bytes)
{
allocs++;
return malloc(bytes);
}
void debug_free(void *memory)
{
allocs--;
free(memory);
}
bool unfreed_memory()
{
return allocs != 0;
}
I'm sure there's a better way, but this works.