【发布时间】:2021-08-07 02:21:05
【问题描述】:
GCC C++ 编译器(还有许多其他 C++ 编译器)提供非标准扩展,例如
-
alloca()用于基于堆栈的分配 - 可变长度数组,因为它们是 C 标准的一部分
从基本的角度来看,这些可以在 C++20 协程中使用吗?有可能吗?如果是的话,这是如何实现的?
据我了解,C++20 协程通常会在第一次调用时(即创建承诺对象时)为协程创建堆栈帧,因此需要知道协程堆栈的大小 -框架。
但是这与 alloca 或其他运行时动态堆栈分配不能很好地配合。
那么有可能吗?如果有,它是如何实现的?或者有什么影响?
【问题讨论】:
-
所有关于
alloca的可怕警告都适用。 VLA 的所有问题(即使作为扩展支持)都适用。并且代码的可移植性有限,如果可移植性无关紧要,那也没关系。 -
"从基本的角度来看"你的意思是什么?
-
标签: c++ g++ c++20 c++-coroutine alloca