没志青年
发布于 2025-06-19 / 14 阅读
0

RT-Thread 内存管理

内存堆初始化

使用堆内存,必须先初始化堆。

void rt_system_heap_init(void* begin_addr, void* end_addr);
  • begin_addr:堆内存区域起始地址

  • end_addr:堆内存区域结束地址

使用 memheap 堆内存:

rt_err_t rt_memheap_init(struct rt_memheap  *memheap,
                        const char  *name,
                        void        *start_addr,
                        rt_uint32_t size)

内存堆管理

分配内存

void *rt_malloc(rt_size_t nbytes);

示例:

int *pi;
pi = rt_malloc(100);
if(pi == NULL) 
{
    rt_kprintf("malloc failed\r\n");
}

重分配内存

在已分配内存块的基础上重新分配内存块的大小,增加或缩小,内存数据保持不变,缩小时后面的数据被截断。

void *rt_realloc(void *rmem, rt_size_t newsize);

释放内存

void rt_free (void *ptr);

内存管理算法