mem
Overview
Collection of function for dynamic memory alloction and macros for memory sizes.
Types and Definitions
cGib_
#define cGib_ 1073741824
Number of bytes for one gibibyte. 1073741824 bytes are required to store one gibibyte.
cMib_
#define cMib_ 1048576
Number of bytes for one mebibyte. 1048576 bytes are required to store one mebibyte.
cKib_
#define cKib_ 1024
Number of bytes for one kibibyte. 1024 bytes are required to store one kibibyte.
Functions
dynamic memory allocation
alloc_c
#define alloc_c_( Type ) \
alloc_c( sizeof_c_( Type ) )
void* alloc_c( int64_t size );
Allocates a block of memory and returns a pointer to the beginning of the zero-initialized block.
If the size is zero returns the function a NULL pointer.
alloc_array_c
#define alloc_array_c_( Number, Type ) \
alloc_array_c( (Number), sizeof_c_( Type ) )
void* alloc_array_c( int64_t num, int64_t size );
Allocates a block of memory for an array of num elements, each of them size bytes long, and returns a pointer to the beginning of the zero-initialized block.
If num or the size is zero returns the function a NULL pointer.
free_all_c
#define free_all_c_( ... ) \
free_all_c( nargs_c_( __VA_ARGS__ ), __VA_ARGS__ )
void free_all_c( int n, ... );
Calls free on n pointer arguments(…). It is recommended to use the macro function to count the numer of pointers automatically.
realloc_c
void* realloc_c( void* ptr, int64_t size );
Changes the size of an allocated memory block pointed by ptr. The function has three possible return values:
-
the value from ptr if it is possible to resize the memory in place
-
a pointer to a new memory block, the old memory block is moved to this location
-
a NULL pointer if size is zero or a reallocation fails
realloc_array_c
#define realloc_array_c_( Ptr, Number, Type ) \
realloc_array_c( (Ptr), (Number), sizeof_c_( Type ) )
void realloc_array_c( void* ptr, int64_t num, int64_t size );
Changes the block of memory pointed by ptr for an array to store num elements, each of them size bytes long. The function has three possible return values:
-
the value from ptr if it is possible to resize the memory in place
-
a pointer to a new memory block, the old memory block is moved to this location
-
a NULL pointer if size is zero or a reallocation fails
general
buf_c_
#define buf_c_( Type )
Creates a pointer to a unutilized value of Type.
stack_mem_c_
#define stack_mem_c_( Size )
Allows to create a fix number of bytes on the stack.
ref_c_
#define ref_c_( Type, Value )
Creates a const pointer to a Value.
sizeof_c_
#define sizeof_c_( Type )
Reuturns the storage size of a Type as int64_t.