对于原子的“内存管理”的思考

2019-07-20 05:44发布

原子的开发板中,有一章节是“内存管理”,主要是对MCU内存和扩展内存进行管理,其中在对MCU自带SRAM管理时,系统首先申请一个大数组:

    __align(4) u8 mem1base[MEM1_MAX_SIZE];

   当需要申请内存时,采用函数:memp_memory=mymalloc(SRAMIN,mempsize);        申请内存
   当释放内存时,采用函数:myfree(SRAMIN,memp_memory);


   也就是说在使用MCU自带SRAM内存时,需要mymalloc和myfree函数成对使用,但是如果使用数组直接申请就可以了:__align(4) u8 memp_memory[mempsize];使用完毕系统自动释放。


   疑问:在使用MCU自带SRAM内存时,没有必要使用原子的“内存管理”啊?或者说在使用MCU自带SRAM内存时,使用“内存管理”有什么优点呢?

         我觉得采用原子的“内存管理”,缺点是占用内存啊?


         但是在使用扩展SRAM时,我认为还是有优点的!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
正点原子
1楼-- · 2019-07-20 08:22
 精彩回答 2  元偷偷看……
孟亮
2楼-- · 2019-07-20 08:22
比如你有1k内存,你要分别读写两个存储设备,每一个都是512
孟亮
3楼-- · 2019-07-20 10:13
 精彩回答 2  元偷偷看……
孟亮
4楼-- · 2019-07-20 15:52
 精彩回答 2  元偷偷看……
xql923
5楼-- · 2019-07-20 20:40
多谢原子和孟亮的回复和解答!
xql923
6楼-- · 2019-07-20 21:39
我还有一个疑问:比如LWIP中“内存池”和“内存堆”都是分配的全局变量数组,也就是说只要系统运行,都不会释放.

---在这种情况下,还需要使用原子的内存管理分配内存吗?只需要采用lwip中系统为“内存池”和“内存堆”分配的全局变量数组即可,我这样理解对吗?

一周热门 更多>