问问题描述
答精选答案

这是因为内存有限啊,嵌入式的内存就只有几十K到几百K,当然你指的嵌入式应该是单片机,不能运行Linux系统的嵌入式系统,可以上Linux系统的嵌入式就可以使用标准C开发了,同样具有malloc函数。
主要原因是内存太小的问题,深层次的原因是由于标准C库的内存管理的容易产生碎片,不利于在小内存运行。
通过自己实现内存管理,从本质上是预先分配一大段内存(嵌入式中就是一个大的数组),那后在依据需要保存的对象大小,按特定的方式分配的。
比如,你需要存储的记录为256字节,假设需要存取16条记录,那么,就需要分配256*16=4096字节,这样就需要4k的数组才可以分配了,这样就避免了内存碎片。
当然这是以灵活性为代价的,如果是可变的,处理方式就比较复杂了,一般在单片机中需要避免,可以分区域(多分配几个数组),取最大长度。
本文来自作者[鄭元暢老婆]投稿,不代表公众科技网立场,如若转载,请注明出处:https://www.cpst.net.cn/changshijingxuan/202609/1529475.html
评论列表(4条)
我是公众科技网的签约作者“鄭元暢老婆”!
希望本篇文章《liteos不采用malloc的原因》能对你有所帮助!
本站[公众科技网]内容主要涵盖:教育咨询,知识百科
本文概览:这是因为内存有限啊,嵌入式的内存就只有几十K到几百K,当然你指的嵌入式应该是单片机,不能运行Linux系统的嵌入式系统,可以上Linux系统的嵌入式就可以使用标准C开发了,同样具有malloc函数。 主要原因是内存太小的问题,深层次的原因是由于标准C库的内存管理的容易产生碎片,不利于在小内存运行。 通过自己实现内存管理,从本质上是预先分配一大段内存(嵌入式中就是一个大的数组),那后在依据需要保存的对象大小,按特定的方式分配的。比如,你需要存储的记录为256字节,假设需要存取16条记录,那么,就需要分配25