Jul 20, 2023

Custom Memory Allocator Interface

libarena is a custom memory allocator interface and implementation. Four allocators are provided flat LIFO arena allocator, object pool allocator and two malloc3 wrappers one which returns the pointers unadulterated and one which obeys the requested, arbitrary alignment. These can be used directly, or through their exported prototype interfaces.

libarena is meant to provide a baseline interface so allocators can be stacked, and to provide a simple and well defined interface for libraries and applications without becoming mired in features or capabilities. It is not meant to restrict or confine what custom allocators can actually accomplish. For instance, the included pool and arena allocators include a suite of string utilities which aren’t available in the generic exportable interface. Note that these string utilities are built upon a generic interface see util.h which can take the prototypical allocation context, so they are also available to any 3rd party compatible allocators.

Checkout these related ports:
  • Zziplib - Library to provide transparent read access to zipped files
  • Zydis - Fast and lightweight x86/x86-64 disassembler library
  • Zycore-c - Support library with platform independent types, macros, etc for Zydis
  • Zthread - Platform-independent object-oriented C++ threading library
  • Zookeeper - Coordination Service for Distributed Applications
  • Zls - Zig LSP implementation + Zig Language Server
  • Zfp - High throughput library for compressed floating-point arrays
  • Zeal - Offline documentation browser
  • Zapcc - C++ caching compiler based on clang
  • Zanata-platform - Web-based translation platform
  • Zanata-cli - Zanata Java command line client
  • Z88dk - Complete Z80/Z180 development kit
  • Z80ex - ZiLOG Z80 CPU emulator library
  • Z80asm - Assembler for the Z80 microprocessor
  • Z80-asm - Z80 assembly code assembler and disassembler