malloc free 分析
本文档记录malloc()、 free()函数分析,
代码来自 https://github.com/apache/mynewt-core/tree/master/libc/baselibc
一、堆栈描述
在嵌入式ram分配中有两个非常重要的概念 - 堆和栈
栈 - 主要用于函数调用时保存 函数入口地址、参数及返回数据 空间,
堆 - 一般用于对RAM动态需求,典型的就是使用malloc来分配一段空间,使用完后用free释放
下图是STM32F429单片机在启动代码中便分配堆和栈的大小
二、代码分析
在堆使用前先建立3个指针管理记录当前堆的使用,右图当前分析堆空间
*sbrkBase - 堆首地址
*sbrkLimit - 堆的结束地址
*brk - 指向当前堆可使用地址
程序在使用malloc 和 free前须先调用 void _sbrkInit(char *base, char *limit)
三、测试流程
四、malloc.c
分配两组空间后
流逝的青春,奔走的年华,煮酒一杯,为谁!
QQ:1832071291