This is a very simple memory leak detector for C. It uses the file system as a database and stores information about any memory that is allocated in files. As memory is freed these files are deleted. Any file left behind after the program exists indicates memory leak.
- Simply include
mem.hfrom C files where memory is managed usingmalloc,calloc,reallocandfree. - Link this library (
libmemd.a) to the executable.
Example:
#include <stdlib.h>
#include "mem.h"
int main() {
void *p;
p = malloc(10); //This will leak
}Run the executable. For each unfreed memory buffer, a .mem file will be
created. For example if memory address 0x7fb1d2403960 leaks, then a file
called 0x7fb1d2403960.mem will be left behind after the application exits.
The file will have information about where the memory was allocated and the size of the buffer. For example:
File: test.c
Line: 7
Size: 10 bytes
Both free and realloc function will be checked for double free scenario. If a double free is detected you will see message like this in the console:
Double free: 0x7fafb35009e0 File: Dictionary.c Line: 45