内存占用的可预测性:在单片机程序中,可预测的内存占用是很重要的因素。静态分配可以在编译过程中确定所需的内存,并且分配过程在程序启动之前就已完成。这使得静态分配成为单片机程序的理想选择。
栈空间的限制和风险:栈分配具有一定的动态性,但整体内存占用不易预测。单片机程序通常将栈大小设置较小,以避免栈溢出的风险。栈分配相对于动态分配的优势在于,栈空间的申请和释放非常简单,因此仍然是可以接受的选择。
动态内存分配的不适用性:动态内存分配对于单片机来说并不太适合。在单片机环境中,动态内存分配通常是缓慢且复杂的,需要额外的数据结构来记录已分配的内存,并在释放时进行适当的处理。因此,大多数单片机程序开发避免使用动态内存分配。
另外,使用全局变量还有一个小技巧是优化返回值。默认情况下,返回值放在栈空间中,这在多层函数调用时会产生赋值的时间浪费。而使用全局变量可以避免这些时间开销。
总的来说,在单片机程序开发中,大量使用全局变量是由于环境和资源限制所做出的选择。而在正常的计算机程序开发中,当没有严格的资源限制时,更倾向于更好的可复用性和模块化设计。
刚好我整理了一套嵌入式学习方向,其中技巧和干货简直满满,里面包含了编程教学、问题视频讲解、毕设800套和语言类教学,只需要回复个6,免费发给你,一条龙服务让你毫无顾虑好好学习