在嵌入式 c 编程语言中。malloc 在单任务嵌入式系统中有用吗?
我在嵌入式系统中工作了 0.5 年。我从未在 8 位控制器编程中使用过 malloc。
有人可以建议我在 8 位控制器编程中使用 malloc 吗?
在嵌入式系统中,强烈不鼓励使用动态分配。关键系统的行为应该是确定性的。许多用于嵌入式固件的库和操作系统都避免使用动态分配。
关于为什么 malloc 不适用于嵌入式系统的简短解释,请参阅:malloc sins
关键系统的标准可能会禁止将 malloc 用作不良的编程实践。
例如,MISRA C1 和 MISRA C2 不允许使用 malloc/calloc。参见MISRA标准。
不,它没有用。整个目的malloc是让多个进程在需要时动态共享系统的所有可用 RAM 内存。这反过来意味着您有一个多进程系统,并且可用 RAM 的数量很大,但也是可变的或未知的。
在“裸机”(无操作系统)或使用 RTOS 的较小嵌入式系统中,这种内存共享没有任何意义。与 PC 不同,这种嵌入式系统是完全确定的,因此您始终知道最坏情况下所需的 RAM 量。您还确切知道芯片上有多少 RAM。
malloc在此类系统上使用的需求通常源于困惑的 PC 程序员,他们在没有先学习嵌入式编程的情况下学习了嵌入式编程。