为什么单片机上的程序不怎么使用malloc,而PC上经常使用?
在开始前我有一些资料,是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」,
点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!主要原因还是大多数用上MCU的产品,本身功能逻辑并不复杂,基本全局变量加状态机就能解决了,不需要动态内存管理,鉴于其性能低,功耗低和片上RAM少,复杂的场景也不会选用MCU来做。
所以MCU上的软件一直受到IT行业鄙视链的压迫被划为三不人员,即不懂软件开发,不懂系统架构,不懂语言抽象。
尽管很多语言都在喊进军嵌入式替代c,结果进军到了今天都没啥结果,c或者说长得像c的语言夹带一堆半生不熟的汇编仍然是绝对主流,很多人以为主控MCU越高端越好,能上Linux就上Linux开发,其实恰恰相反。
16位单片机能用就不会上32位的,8位能用就不会用16位的,如果还有4位机能把问题解决了,老板照样两眼放光,高情商的说法是功耗低抗干扰能力强,实际原因就一个:便宜啊!几十万的出货量,多省一块钱那都是一套房的首付啊。
这种便宜的MCU,大多数的片上ram就几kb十几kb甚至不到1kb的也比比皆是,清一色裸机状态机开发,你别说什么库什么模板展开,你代码稍微多写两行可能都塞不下,你用上malloc还得上内存管理机制,你别说什么优雅什么现代化,你多浪费1字节老板眼里都是败家,正所谓断人钱财犹如杀人父母,一切"优雅"的特性与算法结构都在便宜面前不堪一击。
所以知乎上经常刷到什么学嵌入式要干什么都不说,上来就说要用什么特性语言系统什么的,才够高端才够有技术力才够逼格。