2.2.1 Allocator

struct ZixAllocatorImpl

Definition of ZixAllocator.

ZixMallocFunc malloc

Allocate.

ZixCallocFunc calloc

Allocate and zero.

ZixReallocFunc realloc

Reallocate.

ZixFreeFunc free

Free.

ZixAlignedAllocFunc aligned_alloc

Allocate aligned.

ZixAlignedFreeFunc aligned_free

Free aligned.

typedef struct ZixAllocatorImpl ZixAllocator

A memory allocator.

This object-like structure provides an interface like the standard C functions malloc(), calloc(), realloc(), free(), and aligned_alloc(). It contains function pointers that differ from their standard counterparts by taking a context parameter (a pointer to this struct), which allows the user to implement custom stateful allocators.

typedef void *(*ZixMallocFunc)(ZixAllocator *allocator, size_t size)

General malloc-like memory allocation function.

This works like the standard C malloc(), except has an additional handle parameter for implementing stateful allocators without static data.

typedef void *(*ZixCallocFunc)(ZixAllocator *allocator, size_t nmemb, size_t size)

General calloc-like memory allocation function.

This works like the standard C calloc(), except has an additional handle parameter for implementing stateful allocators without static data.

typedef void *(*ZixReallocFunc)(ZixAllocator *allocator, void *ptr, size_t size)

General realloc-like memory reallocation function.

This works like the standard C remalloc(), except has an additional handle parameter for implementing stateful allocators without static data.

typedef void (*ZixFreeFunc)(ZixAllocator *allocator, void *ptr)

General free-like memory deallocation function.

This works like the standard C remalloc(), except has an additional handle parameter for implementing stateful allocators without static data.

typedef void *(*ZixAlignedAllocFunc)(ZixAllocator *allocator, size_t alignment, size_t size)

General aligned_alloc-like memory deallocation function.

This works like the standard C aligned_alloc(), except has an additional handle parameter for implementing stateful allocators without static data.

typedef void (*ZixAlignedFreeFunc)(ZixAllocator *allocator, void *ptr)

General aligned memory deallocation function.

This works like the standard C free(), but must be used to free memory allocated with the aligned_alloc() method of the allocator. This allows portability to systems (like Windows) that can’t use the same free function in these cases.

ZixAllocator *zix_default_allocator(void)

Return the default allocator which simply uses the system allocator.

void *zix_malloc(ZixAllocator *const allocator, const size_t size)

Convenience wrapper that defers to malloc() if allocator is null.

void *zix_calloc(ZixAllocator *const allocator, const size_t nmemb, const size_t size)

Convenience wrapper that defers to calloc() if allocator is null.

void *zix_realloc(ZixAllocator *const allocator, void *const ptr, const size_t size)

Convenience wrapper that defers to realloc() if allocator is null.

void zix_free(ZixAllocator *const allocator, void *const ptr)

Convenience wrapper that defers to free() if allocator is null.

void *zix_aligned_alloc(ZixAllocator *const allocator, const size_t alignment, const size_t size)

Convenience wrapper that defers to the system allocator if allocator is null.

void zix_aligned_free(ZixAllocator *const allocator, void *const ptr)

Convenience wrapper that defers to the system allocator if allocator is null.