Memory block management functions
Detailed Description
The memory block allocation routines provide a simple yet powerful set of functions for managing a set of memory blocks of fixed size. A set of memory blocks is statically declared with the MEMB() macro. Memory blocks are allocated from the declared memory by the memb_alloc() function, and are deallocated with the memb_free() function.
- Note:
- Because of namespace clashes only one MEMB() can be declared per C module, and the name scope of a MEMB() memory block is local to each C module.
The following example shows how to declare and use a memory block called "cmem" which has 8 chunks of memory with each memory chunk being 20 bytes large.
Define Documentation
#define MEMB |
( |
name, |
|
|
structure, |
|
|
num |
|
) |
|
Value:Declare a memory block.
This macro is used to staticall declare a block of memory that can be used by the block allocation functions. The macro statically declares a C array with a size that matches the specified number of blocks and their individual sizes.
Example:
MEMB(connections, sizeof(struct connection), 16);
- Parameters:
-
| name | The name of the memory block (later used with memb_init(), memb_alloc() and memb_free()). |
| size | The size of each memory chunk, in bytes. |
| num | The total number of memory chunks in the block. |
#define MEMB_CONCAT |
( |
s1, |
|
|
s2 |
|
) |
MEMB_CONCAT2(s1, s2) |
#define MEMB_CONCAT2 |
( |
s1, |
|
|
s2 |
|
) |
s1##s2 |
Function Documentation
Allocate a memory block from a block of memory declared with MEMB().
- Parameters:
-
| m | A memory block previosly declared with MEMB(). |
Deallocate a memory block from a memory block previously declared with MEMB().
- Parameters:
-
| m | m A memory block previosly declared with MEMB(). |
| ptr | A pointer to the memory block that is to be deallocated. |
- Returns:
- The new reference count for the memory block (should be 0 if successfully deallocated) or -1 if the pointer "ptr" did not point to a legal memory block.
Initialize a memory block that was declared with MEMB().
- Parameters:
-
| m | A memory block previosly declared with MEMB(). |