XFusion API v1.3.0
|
采用链表管理,对空闲内存采取相邻合并策略,且能注册多处不同的内存 更多...
结构体 | |
struct | _block_link_t |
宏定义 | |
#define | BYTE_ALIGNMENT_MASK (XF_HEAP_BYTE_ALIGNMENT - 1) |
#define | MINIMUM_BLOCK_SIZE ((unsigned int) (heap_struct_size << 1)) |
类型定义 | |
typedef struct _block_link_t | block_link_t |
函数 | |
static void | insert_block_into_free_list (block_link_t *block_to_insert) |
将内存块插入空闲链表中,前后内存连续则进行合并 | |
void * | xf_heap_malloc (unsigned int size) |
带内存管理的内存申请函数。 | |
void | xf_heap_free (void *pv) |
带内存管理的内存释放函数。 | |
unsigned int | xf_heap_region (const xf_heap_region_t *const heap_regions) |
内存注册,需要在使用 xf_heap_malloc 之前注册。 | |
unsigned int | xf_heap_get_block_size (void *pv) |
获取内存块的实际大小。 | |
变量 | |
static const unsigned int | heap_struct_size |
static const unsigned int | block_allocate_bit = ((unsigned int) 1) << ((sizeof(unsigned int) * 8) - 1) |
static block_link_t | start |
闲内存块链表的起点和终点。 用户在注册的时候末尾 next_free_block 为 (void*) 0,block_size 为 0 | |
static block_link_t * | end = (void *)0 |
采用链表管理,对空闲内存采取相邻合并策略,且能注册多处不同的内存
在文件 xf_alloc.c 中定义.
#define BYTE_ALIGNMENT_MASK (XF_HEAP_BYTE_ALIGNMENT - 1) |
在文件 xf_alloc.c 第 22 行定义.
#define MINIMUM_BLOCK_SIZE ((unsigned int) (heap_struct_size << 1)) |
在文件 xf_alloc.c 第 25 行定义.
typedef struct _block_link_t block_link_t |
|
static |
将内存块插入空闲链表中,前后内存连续则进行合并
block_to_insert | 空闲内存区域数组,需要结尾为{(void*) 0, 0}为最后一个内存块 |
在文件 xf_alloc.c 第 232 行定义.
void * xf_heap_malloc | ( | unsigned int | size | ) |
带内存管理的内存申请函数。
size | 申请内存的大小。 |
内存剩余足够,则切割成已使用内存块和更小的空闲内存块, 空闲内存块插入空闲内存块链表
在文件 xf_alloc.c 第 60 行定义.
void xf_heap_free | ( | void * | pv | ) |
unsigned int xf_heap_region | ( | const xf_heap_region_t *const | heap_regions | ) |
内存注册,需要在使用 xf_heap_malloc 之前注册。
heap_regions | 注册内存的数据信息。 |
在文件 xf_alloc.c 第 141 行定义.
unsigned int xf_heap_get_block_size | ( | void * | pv | ) |
|
static |
在文件 xf_alloc.c 第 41 行定义.
|
static |
在文件 xf_alloc.c 第 46 行定义.
|
static |
闲内存块链表的起点和终点。 用户在注册的时候末尾 next_free_block 为 (void*) 0,block_size 为 0
在文件 xf_alloc.c 第 54 行定义.
|
static |
在文件 xf_alloc.c 第 54 行定义.