gpt4 book ai didi

C++11 : Does new return contiguous memory?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:16 25 4
gpt4 key购买 nike

float* tempBuf = new float[maxVoices]();

上面的结果会不会

1) 16 字节对齐的内存?

2) 确认是连续的内存?

我想要的是:

float tempBuf[maxVoices] __attribute__ ((aligned));

但作为堆内存,这将对 Apple Accelerate 框架有效。

谢谢。

最佳答案

内存将对齐 float ,但不一定适用于特定于 CPU 的 SIMD 指令。我强烈怀疑你的系统sizeof(float) < 16 ,但是,这意味着它没有像您想要的那样对齐。内存将是连续的:&A[i] == &A[0] + i .

如果您需要更具体的信息,new std::aligned_storage<Length, Alignment>将返回一个合适的内存区域,当然假设您确实通过了更具体的对齐。

另一种选择是 struct FourFloats alignas(16) {float[4] floats;}; - 这可能更自然地映射到框架。你现在需要做 new FourFloats[(maxVoices+3)/4] .

关于C++11 : Does new return contiguous memory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35273789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com