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

时间:2014-06-02 03:32:55

标签: c gcc reactive-programming dataflow

我想在C中实现反应式编程。反应式编程是数据流编程的一种形式。所以你有一些代码片段可以将数据发送到下一段代码等。

在单线程情况下,这需要我创建大量临时值。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

要仅允许无效功能,您可以在全局状态下收集事件的结果(反应)。

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