An ultra simple single-threaded linear allocator.
Useful to make the output of applications running under Cachegrind/Callgrind more stable (since it doesn't try to do the clever optimizations that the system allocator does).
Linux:
cargo build
LD_PRELOAD=./target/debug/liblinear_malloc.so your-binary
macOS:
cargo build
DYLD_INSERT_LIBRARIES=./target/debug/liblinear_malloc.dylib DYLD_FORCE_FLAT_NAMESPACE=1 your-binary
Got some useful info about allocation strategies from @mtrebi's memory-allocators
, and @ezrosent's "Allocators in Rust" was a good source to help set up the basic framework.