c++ - 动态分配的内存未在 SSE 中对齐

标签 c++ sse simd avx

<分区>

这是正常工作的代码:

char a[100];
for (int i = 0; i < 100; i++)
     a[i] = 0;
__m128i x = _mm_load_si128((__m128i *) a);

但是如果我动态分配内存,VS 2013 会中断:

char *a = new char[100];
for (int i = 0; i < 100; i++)
     a[i] = 0;
__m128i x = _mm_load_si128((__m128i *) a);

如何同时使用动态内存和对齐加载指令?

最佳答案

因为 sizeof 返回的是 char 指针的大小:4 个字节。

关于c++ - 动态分配的内存未在 SSE 中对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27924673/

相关文章:

C++ volatile 对象,非 volatile 成员

c++ - : How to make threads write to private arrays and merge all the arrays once all the threads finished processing 并行 omp

c - 计算大数数字和的最快方法(作为十进制字符串)

gcc - 在 x64 模式下为 _mm_movemask_epi8 内部生成不必要的指令

c++ - double 型上的 SSE vector 运算

c++ - 我可以从initializer_list实例化一个数组吗?

c++ - Boost Array 数据问题

c++ - SSE/AVX 对齐内存上的 valarray

arm - A64 Neon SIMD - 256 位比较

c++ - simd 指令中不接受索引