Interface for custom allocators.
More...
Go to the source code of this file.
|
| #define | cx_reallocate(mem, n) cx_reallocate_((void**)(mem), n) |
| | Reallocate a previously allocated block and changes the pointer in-place, if necessary.
|
| |
| #define | cx_reallocatearray(mem, nmemb, size) cx_reallocatearray_((void**)(mem), nmemb, size) |
| | Reallocate a previously allocated block and changes the pointer in-place, if necessary.
|
| |
| #define | cxReallocate(allocator, mem, n) cxReallocate_(allocator, (void**)(mem), n) |
| | Reallocate a previously allocated block and changes the pointer in-place, if necessary.
|
| |
| #define | cxReallocateArray(allocator, mem, nmemb, size) cxReallocateArray_(allocator, (void**) (mem), nmemb, size) |
| | Reallocate a previously allocated block and changes the pointer in-place, if necessary.
|
| |
|
|
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.
|
| |
|
| int | cx_reallocate_ (void **mem, size_t n) |
| | Reallocate a previously allocated block and changes the pointer in-place, if necessary.
|
| |
| int | cx_reallocatearray_ (void **mem, size_t nmemb, size_t size) |
| | Reallocate a previously allocated block and changes the pointer in-place, if necessary.
|
| |
| void | cxFree (const CxAllocator *allocator, void *mem) |
| | Free a block allocated by this allocator.
|
| |
| void * | cxMalloc (const CxAllocator *allocator, size_t n) |
| | Allocate n bytes of memory.
|
| |
| void * | cxRealloc (const CxAllocator *allocator, void *mem, size_t n) |
| | Reallocate the previously allocated block in mem, making the new block n bytes long.
|
| |
| void * | cxReallocArray (const CxAllocator *allocator, void *mem, size_t nmemb, size_t size) |
| | Reallocate the previously allocated block in mem, making the new block n bytes long.
|
| |
| int | cxReallocate_ (const CxAllocator *allocator, void **mem, size_t n) |
| | Reallocate a previously allocated block and changes the pointer in-place, if necessary.
|
| |
| int | cxReallocateArray_ (const CxAllocator *allocator, void **mem, size_t nmemb, size_t size) |
| | Reallocate a previously allocated block and changes the pointer in-place, if necessary.
|
| |
| void * | cxCalloc (const CxAllocator *allocator, size_t nmemb, size_t size) |
| | Allocate nmemb elements of n bytes each, all initialized to zero.
|
| |
|
|
const CxAllocator *const | cxDefaultAllocator |
| | A default allocator using standard library malloc() etc.
|
| |
Interface for custom allocators.
◆ cx_reallocate
Reallocate a previously allocated block and changes the pointer in-place, if necessary.
- Error handling
errno will be set by realloc() on failure.
- Parameters
-
| mem | (void**) pointer to the pointer to allocated block |
| n | (size_t) the new size in bytes |
- Return values
-
| zero | success |
| non-zero | failure |
- See also
- cx_reallocatearray()
◆ cx_reallocatearray
| #define cx_reallocatearray |
( |
| mem, |
|
|
| nmemb, |
|
|
| size ) cx_reallocatearray_((void**)(mem), nmemb, size) |
Reallocate a previously allocated block and changes the pointer in-place, if necessary.
The size is calculated by multiplying nemb and size.
- Error handling
errno will be set by realloc() on failure or when the multiplication of nmemb and size overflows.
- Parameters
-
| mem | (void**) pointer to the pointer to allocated block |
| nmemb | (size_t) the number of elements |
| size | (size_t) the size of each element |
- Return values
-
| zero | success |
| non-zero | failure |
◆ cxReallocate
| #define cxReallocate |
( |
| allocator, |
|
|
| mem, |
|
|
| n ) cxReallocate_(allocator, (void**)(mem), n) |
Reallocate 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
-
| allocator | (CxAllocator*) the allocator |
| mem | (void**) pointer to the pointer to allocated block |
| n | (size_t) the new size in bytes |
- Return values
-
| zero | success |
| non-zero | failure |
◆ cxReallocateArray
| #define cxReallocateArray |
( |
| allocator, |
|
|
| mem, |
|
|
| nmemb, |
|
|
| size ) cxReallocateArray_(allocator, (void**) (mem), nmemb, size) |
Reallocate a previously allocated block and changes the pointer in-place, if necessary.
This function acts like cxReallocArray() 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 or the multiplication of nmemb and size overflows.
- Parameters
-
| allocator | (CxAllocator*) the allocator |
| mem | (void**) pointer to the pointer to allocated block |
| nmemb | (size_t) the number of elements |
| size | (size_t) the size of each element |
- Return values
-
| zero | success |
| non-zero | failure |
◆ 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
-
| memory | a 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
-
| data | an optional pointer to custom data |
| memory | a pointer to the object to destruct |
◆ cx_reallocate_()
| int cx_reallocate_ |
( |
void ** | mem, |
|
|
size_t | n ) |
Reallocate a previously allocated block and changes the pointer in-place, if necessary.
- Error handling
errno will be set by realloc() on failure.
- Parameters
-
| mem | pointer to the pointer to allocated block |
| n | the new size in bytes |
- Return values
-
| zero | success |
| non-zero | failure |
- See also
- cx_reallocatearray()
◆ cx_reallocatearray_()
| int cx_reallocatearray_ |
( |
void ** | mem, |
|
|
size_t | nmemb, |
|
|
size_t | size ) |
Reallocate a previously allocated block and changes the pointer in-place, if necessary.
The size is calculated by multiplying nemb and size.
- Error handling
errno will be set by realloc() on failure or when the multiplication of nmemb and size overflows.
- Parameters
-
| mem | pointer to the pointer to allocated block |
| nmemb | the number of elements |
| size | the size of each element |
- Return values
-
| zero | success |
| non-zero | failure |
- See also
- cx_reallocate()
◆ cxCalloc()
| void * cxCalloc |
( |
const CxAllocator * | allocator, |
|
|
size_t | nmemb, |
|
|
size_t | size ) |
Allocate nmemb elements of n bytes each, all initialized to zero.
- Parameters
-
| allocator | the allocator |
| nmemb | the number of elements |
| size | the size of each element in bytes |
- Returns
- a pointer to the allocated memory
◆ cxFree()
| void cxFree |
( |
const CxAllocator * | allocator, |
|
|
void * | mem ) |
Free a block allocated by this allocator.
- Note
- Freeing a block of a different allocator is undefined.
- Parameters
-
| allocator | the allocator |
| mem | a pointer to the block to free |
◆ cxMalloc()
| void * cxMalloc |
( |
const CxAllocator * | allocator, |
|
|
size_t | n ) |
Allocate n bytes of memory.
- Parameters
-
| allocator | the allocator |
| n | the number of bytes |
- Returns
- a pointer to the allocated memory
◆ cxRealloc()
| void * cxRealloc |
( |
const CxAllocator * | allocator, |
|
|
void * | mem, |
|
|
size_t | n ) |
Reallocate 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
-
| allocator | the allocator |
| mem | pointer to the previously allocated block |
| n | the new size in bytes |
- Returns
- a pointer to the reallocated memory
◆ cxReallocArray()
| void * cxReallocArray |
( |
const CxAllocator * | allocator, |
|
|
void * | mem, |
|
|
size_t | nmemb, |
|
|
size_t | size ) |
Reallocate 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.
The size is calculated by multiplying nemb and size. If that multiplication overflows, this function returns NULL and errno will be set.
- Note
- Re-allocating a block allocated by a different allocator is undefined.
- Parameters
-
| allocator | the allocator |
| mem | pointer to the previously allocated block |
| nmemb | the number of elements |
| size | the size of each element |
- Returns
- a pointer to the reallocated memory
◆ cxReallocate_()
| int cxReallocate_ |
( |
const CxAllocator * | allocator, |
|
|
void ** | mem, |
|
|
size_t | n ) |
Reallocate 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
-
| allocator | the allocator |
| mem | pointer to the pointer to allocated block |
| n | the new size in bytes |
- Return values
-
| zero | success |
| non-zero | failure |
◆ cxReallocateArray_()
| int cxReallocateArray_ |
( |
const CxAllocator * | allocator, |
|
|
void ** | mem, |
|
|
size_t | nmemb, |
|
|
size_t | size ) |
Reallocate a previously allocated block and changes the pointer in-place, if necessary.
This function acts like cxReallocArray() 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 or the multiplication of nmemb and size overflows.
- Parameters
-
| allocator | the allocator |
| mem | pointer to the pointer to allocated block |
| nmemb | the number of elements |
| size | the size of each element |
- Return values
-
| zero | success |
| non-zero | on failure |