您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
嵌入式中是否应该使用动态内存?
内存,动态分配,嵌入式嵌入式中是否应该使用动态内存?
发布时间:2016-12-08加入收藏来源:互联网点击:
嵌入式中是否应该使用动态内存?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
我的态度:
在嵌入式中(使用单片机MCU,且没有使用嵌入式操作系统)的系统中,不要动态分配内存。
原因:
(1)动态分配内存的风险大,容易导致系统崩溃,风险主要来自于动态分配的内存不进行释放(由于疏忽,或是执行过程中的异常,导致malloc后,不free),最终导致RAM访问越界,造成系统复位。我工作中就遇到过两次这种情况:一个是产品在现场几分钟后就会复位,最终查出来原因是,现场干扰导致程序malloc后进入异常处理分支,而这个分支没有free;第二次是做bootloader,加载的bin文件,总是无法正常运行,将malloc函数修改去掉以后,功能正常,原因不明。
(2)动态分配内存意义不大,动态分配内存的唯一作用就是内存的分时复用。但是这个作用大部分可以通过定义局部变量的方式实现。
因此,嵌入式系统,稳定性第一位,尽量不要使用malloc。
在公司看到嵌入式使用malloc的,我立刻会送他六字“别装逼,赶紧改”。
回答于 2019-09-11 08:43:50
看使用场景,一般是禁止使用。
芯片级别开发。芯片资源有限,工程师一定要知道这片内存用于干嘛的,动态分配内存很容易出问题。
而且很多芯片级编译器都不支持malloc,要动态分配内存需要自己写分配函数。
系统级别开发。带操作系统的话这种风险就小很多,堆栈由操作系统分配,或者操作系统会把malloc函数重写,安全性会高很多。
上一篇:《平凡的世界》剧中如果田晓霞没死,她和少平结婚,他们的婚姻会幸福吗?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |