Data Structures | |
struct | mem_helper |
struct | mem |
Functions | |
void * | mem_malloc (mem_size_t size) |
void | mem_free (void *rmem) |
void | mem_init (void) |
void * | mem_realloc (void *rmem, mem_size_t newsize) |
void * | mem_calloc (mem_size_t count, mem_size_t size) |
This is a lightweight replacement for the standard C library malloc().
If you want to use the standard C library malloc() instead, define MEM_LIBC_MALLOC to 1 in your lwipopts.h
To let mem_malloc() use pools (prevents fragmentation and is much faster than a heap but might waste some memory), define MEM_USE_POOLS to 1, define MEM_USE_CUSTOM_POOLS to 1 and create a file "lwippools.h" that includes a list of pools like this (more pools can be added between _START and _END):
Define three pools with sizes 256, 512, and 1512 bytes LWIP_MALLOC_MEMPOOL_START LWIP_MALLOC_MEMPOOL(20, 256) LWIP_MALLOC_MEMPOOL(10, 512) LWIP_MALLOC_MEMPOOL(5, 1512) LWIP_MALLOC_MEMPOOL_END
void* mem_calloc | ( | mem_size_t | count, | |
mem_size_t | size | |||
) |
Contiguously allocates enough space for count objects that are size bytes of memory each and returns a pointer to the allocated memory.
The allocated memory is filled with bytes of value zero.
count | number of objects to allocate | |
size | size of the objects to allocate |
void mem_free | ( | void * | rmem | ) |
Free memory previously allocated by mem_malloc. Loads the pool number and calls memp_free with that pool number to put the element back into its pool
rmem | the memory element to free |
rmem | is the data portion of a struct mem as returned by a previous call to mem_malloc() |
void mem_init | ( | void | ) |
Zero the heap and initialize start, end and lowest-free
void * mem_malloc | ( | mem_size_t | size | ) |
Allocate memory: determine the smallest pool that is big enough to contain an element of 'size' and get an element from that pool.
size | the size in bytes of the memory needed |
size | is the minimum size of the requested block in bytes. |
void* mem_realloc | ( | void * | rmem, | |
mem_size_t | newsize | |||
) |
In contrast to its name, mem_realloc can only shrink memory, not expand it. Since the only use (for now) is in pbuf_realloc (which also can only shrink), this shouldn't be a problem!
rmem | pointer to memory allocated by mem_malloc the is to be shrinked | |
newsize | required size after shrinking (needs to be smaller than or equal to the previous size) |