[RTT例程练习] 3.1 动态内存管理之rt_malloc和rt_free
rt_malloc和rt_free 和 malloc free 类似,是用来在堆上分配内存的,RT-Thread中是用小内存法来实现的。下面程序就是不停分配内存和释放内存,并打印分配到的内存首地址。
程序:
#include <rtthread.h> struct rt_thread thread1; static rt_uint8_t thread1_stack[512]; static void thread1_entry(void *parameter) { int i,j; char *ptr[20]; for (j = 0; j < 20; j++) ptr[j] = RT_NULL; for (i = 0; i < 2; i++) { for (j = 0; j < 20; j++) { ptr[j] = rt_malloc(1 << j); if (ptr[j] != RT_NULL) { rt_kprintf("get memory: 0x%x.\n", ptr[j]); rt_free(ptr[j]); ptr[j] = RT_NULL; } } } } int rt_application_init() { rt_thread_init(&thread1, "thread1", thread1_entry, RT_NULL, &thread1_stack[0], sizeof(thread1_stack), 10, 100); rt_thread_startup(&thread1); return 0; }
结果:
get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58 get memory: 0x20000c58
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步