[英]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.