【发布时间】:2020-08-18 04:00:09
【问题描述】:
我正在编写一些 SIMD 代码。如果我决定以支持 512 位 simd 指令的 CPU 为目标,我需要将我的数组对齐到 32 字节,并可以选择升级到 64 字节。
据我所知,realloc 似乎没有对对齐做出任何承诺。好像 malloc 和 realloc 只能保证 8bytes/64bits?
不写自己的,如果我想重新分配一块内存,我有什么选择?
【问题讨论】:
-
alignas 工作吗?
-
@Eljay:
alignas说明符仅适用于变量声明,但 OP 使用malloc/realloc询问动态内存分配。因此,它不会起作用。 -
看来需要用到
aligned_malloc这个函数。但是,链接的文档没有说明realloc是否保证保持对齐。 -
如果您使用的是Microsoft Windows平台,您可以使用
_aligned_realloc。