ucx
UAP Common Extensions
Loading...
Searching...
No Matches
Data Structures | Typedefs | Functions | Variables
allocator.h File Reference

Interface for custom allocators. More...

#include "common.h"

Go to the source code of this file.

Data Structures

struct  cx_allocator_class
 The class definition for an allocator. More...
 
struct  cx_allocator_s
 Structure holding the data for an allocator. More...
 

Typedefs

typedef struct cx_allocator_s CxAllocator
 High-Level type alias for the allocator type.
 
typedef void(* cx_destructor_func) (void *memory)
 Function pointer type for destructor functions.
 
typedef void(* cx_destructor_func2) (void *data, void *memory)
 Function pointer type for destructor functions.
 

Functions

int cx_reallocate (void **mem, size_t n)
 Re-allocate a previously allocated block and changes the pointer in-place, if necessary.
 
void * cxMalloc (CxAllocator const *allocator, size_t n)
 Allocate n bytes of memory.
 
void * cxRealloc (CxAllocator const *allocator, void *mem, size_t n)
 Re-allocate the previously allocated block in mem, making the new block n bytes long.
 
int cxReallocate (CxAllocator const *allocator, void **mem, size_t n)
 Re-allocate a previously allocated block and changes the pointer in-place, if necessary.
 
void * cxCalloc (CxAllocator const *allocator, size_t nelem, size_t n)
 Allocate nelem elements of n bytes each, all initialized to zero.
 
void cxFree (CxAllocator const *allocator, void *mem)
 Free a block allocated by this allocator.
 

Variables

CxAllocatorcxDefaultAllocator
 A default allocator using standard library malloc() etc.
 

Detailed Description

Interface for custom allocators.

Typedef Documentation

◆ cx_destructor_func

typedef void(* cx_destructor_func) (void *memory)

Function pointer type for destructor functions.

A destructor function deallocates possible contents and MAY free the memory pointed to by memory. Read the documentation of the respective function pointer to learn if a destructor SHALL, MAY, or MUST NOT free the memory in that particular implementation.

Parameters
memorya pointer to the object to destruct

◆ cx_destructor_func2

typedef void(* cx_destructor_func2) (void *data, void *memory)

Function pointer type for destructor functions.

A destructor function deallocates possible contents and MAY free the memory pointed to by memory. Read the documentation of the respective function pointer to learn if a destructor SHALL, MAY, or MUST NOT free the memory in that particular implementation.

Parameters
dataan optional pointer to custom data
memorya pointer to the object to destruct

Function Documentation

◆ cx_reallocate()

int cx_reallocate ( void **  mem,
size_t  n 
)

Re-allocate a previously allocated block and changes the pointer in-place, if necessary.

Error handling
errno will be set by realloc() on failure.
Parameters
mempointer to the pointer to allocated block
nthe new size in bytes
Returns
zero on success, non-zero on failure

◆ cxCalloc()

void * cxCalloc ( CxAllocator const *  allocator,
size_t  nelem,
size_t  n 
)

Allocate nelem elements of n bytes each, all initialized to zero.

Parameters
allocatorthe allocator
nelemthe number of elements
nthe size of each element in bytes
Returns
a pointer to the allocated memory

◆ cxFree()

void cxFree ( CxAllocator const *  allocator,
void *  mem 
)

Free a block allocated by this allocator.

Note
Freeing a block of a different allocator is undefined.
Parameters
allocatorthe allocator
mema pointer to the block to free

◆ cxMalloc()

void * cxMalloc ( CxAllocator const *  allocator,
size_t  n 
)

Allocate n bytes of memory.

Parameters
allocatorthe allocator
nthe number of bytes
Returns
a pointer to the allocated memory

◆ cxRealloc()

void * cxRealloc ( CxAllocator const *  allocator,
void *  mem,
size_t  n 
)

Re-allocate the previously allocated block in mem, making the new block n bytes long.

This function may return the same pointer that was passed to it, if moving the memory was not necessary.

Note
Re-allocating a block allocated by a different allocator is undefined.
Parameters
allocatorthe allocator
mempointer to the previously allocated block
nthe new size in bytes
Returns
a pointer to the re-allocated memory

◆ cxReallocate()

int cxReallocate ( CxAllocator const *  allocator,
void **  mem,
size_t  n 
)

Re-allocate a previously allocated block and changes the pointer in-place, if necessary.

This function acts like cxRealloc() using the pointer pointed to by mem.

Note
Re-allocating a block allocated by a different allocator is undefined.
Error handling
errno will be set, if the underlying realloc function does so.
Parameters
allocatorthe allocator
mempointer to the pointer to allocated block
nthe new size in bytes
Returns
zero on success, non-zero on failure