Casual allocator which supports deallocation.
Allocator to use for objects with infinite lifetime, which will never be freed.
Wrapper allocator which calls a function when memory allocation fails. Because downstream code doesn't check for nulls, this allows better error messages should btdu run out of memory. (Mainly this is useful for testing and profiling.)
Memory allocation