我正在用C编写的相当大的项目添加(还)另一个子模块,我希望在我的小处理器上运行。现在我想知道:我的新模块我很小,但它需要在每个周期堆积相当多的中间信息,以便计算它的东西。我创建了一个数据结构来保存所有这些中间数据,这就是我想知道的:
关于我的系统的一些信息:模块一个接一个地运行,仅重新进入以获得结果,但不执行进一步的计算。中间数据实际上只在每个模块的更新调用期间需要,并且这些数据总是以相同的顺序。
哪种解决方案最好?在哪个光?编译器在哪里发挥作用?我在这里不知道一般的记忆机制吗?
提前感谢您的澄清!
答案 0 :(得分:2)
这很大程度上取决于您使用的系统类型,以及最重要的系统,执行速度或内存消耗。我会假设"小处理器"指微控制器。你没有提到重新入职,所以我认为这不是问题。
在这种情况下,如果您认为让文件范围结构浪费内存,那么您只是在欺骗自己。因为你总是必须设计最坏的情况,这里最糟糕的情况是调用需要使用结构的函数。那时,你的总体最坏情况内存消耗将涉及结构,无论结构是在文件范围还是在堆栈上分配,它总是相同的。
如果你没有足够的内存来处理最坏的情况,那么世界上没有任何分配方法可以拯救你。暂时保存一些内存并没有任何意义。"。在不运行最坏情况时节省一些内存是无关紧要的。对于最坏的情况,你仍然需要有足够的记忆力 - 要么你有这个,要么你没有。
因此,最好的选择是将结构保留在文件范围内,因为这不会影响内存消耗,但可以节省执行时间。
如果您的模块需要是线程安全的或允许多个实例,那么这完全是另一个故事。