DUMA (Detect Unintended Memory Access) is a free and multi-platform memory debugging library.
DUMA can detect memory leaks and buffer overruns (or underruns) in a malloc() / new memory buffer. DUMA is a fork of Bruce Perens' Electric Fence library.
Here are some key features of "DUMA":
· "overloads" all standard memory allocation functions like malloc, calloc, memalign, strdup, operator new, operator new and also their counterpart deallocation functions like free, operator delete and operator delete
utilizes the MMU (memory management unit) of the CPU:
· allocates and protects an extra memory page to detect any illegal access beyond the top of the buffer (or bottom, at the user's option)
· stops the program at exactly that instruction, which does the erroneous access to the protected memory page, allowing location of the defectice source code in a debugger
· detects erroneous writes at the non-protected end of the memory block at deallocation of the memory block
· detects mismatch of allocation/deallocation functions: f.e. allocation with malloc() but deallocation with operator delete
· leak detection: detect memory blocks which were not deallocated until program exit
· runs on Linux / U*ix and MS Windows NT/2K/XP operating systems
· preloading of the library on Linux (and some U*ix) systems allowing tests without necessity of changing source code or recompilation
What's New in This Release: [ read full changelog ]
· alternative locking using critical sections on Win32
· added Windows Threading to testmt.c
· use of WIN32_SEMAPHORES on Win32-Cygwin
· fixed CreateSemaphore() counts on Win32
· fixed race condition when using macro 'delete'
· bugfix in strncpy(): error check was too rigorous