Debug Allocator

#import "std/debug_allocator"

Debug allocator can be used to analyze memory usage of program and eventually analyze possible memory leaks. By dbgalloc_init call the global context allocator is replaced by debug allocator, every following allocations are recorded and analyzed in runtime since then. Call dbgalloc_terminate to swap default context allocator back to previous one.

Example

#import "std/debug_allocator"

main :: fn () s32 {
    dbgalloc_init();
    defer dbgalloc_terminate();

    // leaking allocation
    alloc(64);
    return 0;
}
$ ./out.exe
******************* MEMORY REPORT ******************
* Allocated 64 Bytes.
* Count of allocations 1.
****************************************************
Dump memory leaks begin:
    [1] - test.bl:10 (64 bytes)
Dump memory leaks end.

Note

Debug allocator is thread safe. Init and terminate must be called from main thread.