1.8.9 Using malloc() when exploiting the C library
If heap support is required for bare machine C, you must implement _init_alloc() must be called first to supply initial heap bounds, and __rt_heap_extend() must
be provided even if it only returns failure. Without __rt_heap_extend() , certain library functionality is included that causes
problems when you are writing bare machine C.Prototypes for both
_init_alloc() and __rt_heap_extend() are
in rt_heap.h.以上摘自http://infocenter./help/index.jsp?topic=/com.arm.doc.subset.swdev.comp6/index.html 程序包含头文件:rt_heap.h,stdlib.h。注意不要勾选MicroLIB。 汇编代码中设置Heap大小,我设置为4KB。 Heap_Size EQU 0x00004000 跟高级的方法如下: 简单的测试代码如下: 调试可看到如下结果:
其中p,k是两次malloc得到的地址,i为两次得到的mallac得到地址的间隔,需要注意malloc得到的内存是8字节对其的。a是写入的一个数据。该程序执行一段时间后会内存泄漏,因为没free,去掉free()的注释即可。以下是free(p)的调试结果:经过多次malloc后得到的内存地址始终是0x20002570。 总结:
饿死了,以上暂作笔记用,找时间再整理下测试下。
|
|
来自: goodwangLib > 《FATFS》