A debugging allocator that fills memory with a recognizable byte on allocation and on free.
get_overwriting_allocator wraps another allocator. Use it with push_allocator while hunting for code that reads memory before writing it or after freeing it.
Returns an allocator that wraps base_allocator (the current allocator when unset) and fills memory with overwrite_byte when it is allocated and again when it is freed, so reads of uninitialized or freed memory show an obvious pattern. Freeing a pointer it did not hand out, or twice, is reported. Free it with deinit_overwriting_allocator.