在嵌入式C编程语言中,
我从事嵌入式系统工作已经0.5年了。我从未在8位控制器编程中使用过
有人能建议我在8位控制器编程中使用
malloc()
在单任务嵌入式系统中有用吗?我从事嵌入式系统工作已经0.5年了。我从未在8位控制器编程中使用过
malloc()
。有人能建议我在8位控制器编程中使用
malloc()
吗?malloc
的整个目的是让多个进程动态共享系统中所有可用的RAM内存,当它们需要时。这又意味着您拥有一个多进程系统,并且可用RAM的数量是巨大的,但也是可变或未知的。malloc
的需求通常源于困惑的PC程序员,他们在学习之前已经开始进行嵌入式编程。malloc
在单线程应用程序中非常有用,特别是当程序需要创建大小不同的内存对象时。例如保存字符串。如果您可以从空闲内存池中分配可变大小的块,则可以创建比所有固定大小的对象更多的对象。但这会让您担心碎片化、垃圾回收和内存泄漏等问题。 - infixedmalloc
。随着嵌入式系统变得更加强大,它们正在进入常规系统不久前操作的领域。也许你想要一个确定性系统,例如每次从SD卡上通过SPI获取相同数据而不是将其缓存在RAM中。但我不想这样做。是的,我们必须处理最坏情况。但这并不意味着你必须一直生活在其中。 - infixed在这样的系统中使用malloc是没有任何意义的。当您进行系统工程时,包括资源分配在内。作为单个任务,该任务拥有系统中的所有资源。因此,在设计时确定需要多少每种资源,包括内存。在运行时很久之前,您已经知道哪些结构体需要多少内存,因此没有理由为已知答案的事情添加额外的代码风险。如果您已经做了5年,那么您已经知道这一点。如果您没有进行系统工程,则应开始看到过去的工作在现场失败。
malloc
功能虽强大,但也有代价。在长时间的执行过程中,你需要担心内存碎片和垃圾回收问题。如果能在编译时分配内存结构,将会更加清晰简明。 - infixedmalloc
,这表明你并不需要它,这在一定程度上回答了你的问题。 - Jabberwockymalloc
相同的语义来运行指针的“愚蠢”malloc
。 - Eugene Sh.