的文档在这里_alloca()
说:
_alloca 例程返回一个指向已分配空间的 void 指针,该指针保证为存储任何类型的对象而适当对齐。
但是,这里说:
_alloca 需要 16 字节对齐,并且还需要使用帧指针。
因此,似乎在第一个参考文献中,他们忘记了大约 32 字节对齐的 AVX/AVX2 类型,例如__m256d
.
让我感到困惑的另一件事是第一页说不_alloca()
推荐使用,而它建议使用一个可以从堆而不是堆栈分配内存的函数(这在我的多线程应用程序中是不可接受的)。
那么有人可以指出我是否有一些现代的(也许是新的 C/C++ 标准?)对齐堆栈内存分配的方法?
说明1:请不要提供要求数组大小为编译时常量的解决方案。我的函数根据运行时参数值分配可变数量的数组项。