bdo*_*lan 10
首先,将变量放在全局变量中不会直接提高CPU使用率.堆栈初始化通常是函数入口/出口处的单个加/减,与堆栈帧大小无关.
但是,如果函数需要一个非常大的工作集,最好把它放在堆栈以外的东西上; 堆栈的大小通常相当有限.通常的选择是堆; 但是这需要时间来分配和释放,所以如果你要经常调用这个函数,它可能会很昂贵.这也是嵌入式系统的一个问题,它们可能没有适当的堆实现.
因此,如果堆是一个问题,全局变量可以是一个解决方案.但是,它们有它们自己的缺点 - 特别是,你不希望同时有多个线程弄乱全局数据,也不能在不花费太多精力的情况下通过这个函数递归,或者递归位可能会损坏较早的调用函数.
因此,这种技术在某些情况下可能会有所帮助.但是,由于线程问题,我不建议将它作为首选.
此外,对于它的价值,您可以使用static变量获得相同的记忆效果.我建议使用这些,否则你最终会污染全局命名空间.