#include "lwip/opt.h"#include "lwip/def.h"#include "lwip/mem.h"#include "lwip/sys.h"#include "lwip/stats.h"#include <string.h>Go to the source code of this file.
Data Structures | |
| struct | mem |
Defines | |
| #define | MIN_SIZE 12 |
| #define | MIN_SIZE_ALIGNED LWIP_MEM_ALIGN_SIZE(MIN_SIZE) |
| #define | SIZEOF_STRUCT_MEM LWIP_MEM_ALIGN_SIZE(sizeof(struct mem)) |
| #define | MEM_SIZE_ALIGNED LWIP_MEM_ALIGN_SIZE(MEM_SIZE) |
| #define | LWIP_MEM_FREE_DECL_PROTECT() |
| #define | LWIP_MEM_FREE_PROTECT() sys_arch_sem_wait(mem_sem, 0) |
| #define | LWIP_MEM_FREE_UNPROTECT() sys_sem_signal(mem_sem) |
| #define | LWIP_MEM_ALLOC_DECL_PROTECT() |
| #define | LWIP_MEM_ALLOC_PROTECT() |
| #define | LWIP_MEM_ALLOC_UNPROTECT() |
Functions | |
| void | mem_init (void) |
| void | mem_free (void *rmem) |
| void * | mem_realloc (void *rmem, mem_size_t newsize) |
| void * | mem_malloc (mem_size_t size) |
| void * | mem_calloc (mem_size_t count, mem_size_t size) |
Dynamic memory manager
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
Definition in file mem.c.
| #define MIN_SIZE 12 |
| 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 |
Definition at line 620 of file mem.c.

| void mem_free | ( | void * | rmem | ) |
Put a struct mem back on the heap
| rmem | is the data portion of a struct mem as returned by a previous call to mem_malloc() |
| void mem_init | ( | void | ) |
| void* mem_malloc | ( | mem_size_t | size | ) |
Adam's mem_malloc() plus solution for bug #17922 Allocate a block of memory with a minimum of 'size' bytes.
| size | is the minimum size of the requested block in bytes. |
Note that the returned value will always be aligned (as defined by MEM_ALIGNMENT).
| 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) |
1.7.1