这是因为内存有限啊,嵌入式的内存就只有几十K到几百K,当然你指的嵌入式应该是单片机,不能运行Linux系统的嵌入式系统,可以上Linux系统的嵌入式就可以使用标准C开发了,同样具有malloc函数。
主要原因是内存太小的问题,深层次的原因是由于标准C库的内存管理的容易产生碎片,不利于在小内存运行。
通过自己实现内存管理,从本质上是预先分配一大段内存(嵌入式中就是一个大的数组),那后在依据需要保存的对象大小,按特定的方式分配的。
比如,你需要存储的记录为256字节,假设需要存取16条记录,那么,就需要分配256*16=4096字节,这样就需要4k的数组才可以分配了,这样就避免了内存碎片。
当然这是以灵活性为代价的,如果是可变的,处理方式就比较复杂了,一般在单片机中需要避免,可以分区域(多分配几个数组),取最大长度。