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.
#include "memb.h" MEMB(cmem, 20, 8); int main(int argc, char *argv[]) { char *ptr; memb_init(&cmem); ptr = memb_alloc(&cmem); if(ptr != NULL) { do_something(ptr); } else { printf("Could not allocate memory.\n"); } if(memb_free(&cmem, ptr) == 0) { printf("Deallocation succeeded.\n"); } }
Files | |
| file | memb.h |
| Memory block allocation routines. | |
| file | memb.c |
| Memory block allocation routines. | |
Defines | |
| #define | MEMB(name, size, num) |
| Declare a memory block. | |
Functions | |
| void | memb_init (struct memb_blocks *m) |
| Initialize a memory block that was declared with MEMB(). | |
| char * | memb_alloc (struct memb_blocks *m) |
| Allocate a memory block from a block of memory declared with MEMB(). | |
| char | memb_ref (struct memb_blocks *m, char *ptr) |
| Increase the reference count for a memory chunk. | |
| char | memb_free (struct memb_blocks *m, void *ptr) |
| Deallocate a memory block from a memory block previously declared with MEMB(). | |
|
|
Value: static char MEMB_CONCAT(name,_memb_mem)[(size + 1) * num]; \ static struct memb_blocks name = {size, num, MEMB_CONCAT(name,_memb_mem)} 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:
|
|
|
Allocate a memory block from a block of memory declared with MEMB().
|
|
||||||||||||
|
Deallocate a memory block from a memory block previously declared with MEMB().
|
|
|
Initialize a memory block that was declared with MEMB().
|
|
||||||||||||
|
Increase the reference count for a memory chunk.
|
1.3.6