繁体   English   中英

堆栈内存重用gcc在C中的优化?

[英]stack memory reuse gcc optimization in C?

我想在C语言中实现反应式编程。反应式编程是数据流编程的一种形式。 因此,您具有将数据发送到下一个代码段等的代码段。

在单线程情况下,这将要求我创建许多临时值。

gcc是否可以选择重用不再使用的临时变量的堆栈存储器?

为此,它需要分析程序的数据流。 它使用哪种算法? 最重要的是,我可以依靠它吗?

另一种选择是自己做。 将必要的内存分配为char数组,然后使用指针。

根据您的模型和环境,可能有一个“肮脏”的解决方案:反应式程序通常将函数作为过程调用,即没有返回值。 在C的情况下,它对应于void函数。 如果您的框架遵循此模型和gcc,则可以使用noreturn属性。

请注意,禁止从noreturn标记的noreturn返回。 但是,不能保证局部值和返回值,因为编译可能会将它们优化掉。 但是,这正是您想要的。

仅允许使用void函数,您可以在全局状态下收集事件的结果(反应)。

如果您想要一个更通用而不是自动化的解决方案,那么有比数组方法更舒适的方法:只需在堆上分配所有不需要的变量,并在下一个函数调用之前对它们收费。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM