如何在ARM处理器上实现如malloc函数的功能
标准库中的malloc函数是不需要提前分配好存储空间的,我测试过,一段代码有没有malloc只跟代码段的大小有关,而跟数据段都没有关系的。
但是在ucos和freeRtos里面,类似于malloc函数的实现,都是提前分配好一段固定大小的存储空间,若我代码里面没有使用此函数,这一空间也不能回收利用。
望高手求教
如果你用的是MDK的话,可能是放在ZO区的吧!所以在RO和RW区看不见
你的arm处理器在启动的时候有个文件是专门配置stack和heap的,吧heap的大小配置成0,这样malloc就无法使用了,也不会浪费内存空间了。
做一个链表,记录分配使用内存的开始位置和长度,释放的时候标记为释放,再做一些合并操作,分配的时候查找哪有空闲的标记使用。
思路如此,怎么做到高效,可以有多种方法,最简单的是固定块大小分配方法,方便合并,但是可能导致浪费。
是需要保留空间用于动态内存分配的,否则管理起来就比较困难