Heap ========== 概述 ------ 堆(heap)是一种非线性的数据结构,其本身是一块连续内存。本工程代码主要面向实时操作系统,故选用tlsf内存管理算法,该算法有分配速度块,内存碎片少的优点。 功能特性 --------- - 支持多 heap 块的同时使用。 - 支持 heap 的分块使用,每个 heap 块都有其特定属性, 可申请特定属性的 heap 块。 - 支持申请内存块时的4字节、8字节、16字节、32字节等地址对齐。 配置说明 --------- caps 说明 :::::::::: :c:var:`wq_heap_caps_t` 一共32位可以用来定义,bit0~15 用来修饰 heap 属性,bit16~19 用来修饰 heap 申请时的内存对齐方式,bit20~30 为保留位给用户自定义. 静态初始化 ::::::::::: :cpp:func:`wq_heap_caps_init` 为静态初始化接口,在程序 heap 使用前需被调用,完成初始化。 其原理是根据在linker文件中,section(".heap_region.") 段中占用空间,预定义的 heap 参数完成初始化。 heap 预定义通过 :cpp:func:`WQ_HEAP_REGION_ADD_STATIC` 完成。 动态初始化 ::::::::::: :cpp:func:`wq_heap_caps_region_add_dynamic` 是动态初始化接口。 其可在程序运行中被初始化,将一些已经用不到的内存,重新加载到堆组中。 核心api --------- - 静态初始化 :cpp:func:`wq_heap_caps_init` - 动态初始化 :cpp:func:`wq_heap_caps_region_add_dynamic` - 内存申请 :cpp:func:`wq_heap_caps_malloc` - 内存释放 :cpp:func:`wq_heap_caps_free` - 获取对应caps属性的heap总大小 :cpp:func:`wq_heap_caps_get_total_size` - 获取对应caps属性的当前剩余 :cpp:func:`wq_heap_caps_get_free_size` - 获取对应caps属性的最小剩余 :cpp:func:`wq_heap_get_minimum_free_size` - 获取所有heap总大小 :cpp:func:`wq_heap_get_total_size` - 获取所有heap总剩余 :cpp:func:`wq_heap_caps_get_free_size` 功能特点 ------------ - 支持非连续内存的多个堆空间。 - 支持静态初始化分配堆内存段,同时也支持动态添加新的堆内存段。 - 支持堆内存类型配置,参考caps参数。 用法流程 ------------- - 静态初始化堆 :cpp:func:`wq_heap_caps_init` - 动态初始化添加堆 :cpp:func:`wq_heap_caps_region_add_dynamic` - 堆内存申请 :cpp:func:`wq_heap_caps_malloc` - 堆内存释放 :cpp:func:`wq_heap_caps_free` API 介绍 ------------ .. doxygenfile:: wq_heap.h