gpt4 book ai didi

c - 加载由 malloc 分配的数组时发生访问冲突?

转载 作者:行者123 更新时间:2023-11-30 19:18:04 25 4
gpt4 key购买 nike

我有一个由 malloc 按以下方式分配的数组:

double * a = ( double * ) malloc( lda * (k+1) * sizeof( double ) );  

其中 lda=1000k 是 40 的倍数。

然后我尝试在下面的代码中将 a 的值加载到寄存器中

reg = _mm_load_pd( (double *) & a[ (p*lda)+0 ]);

其中p是循环中受控的索引。

此代码会产生访问冲突错误。

我知道要使用_mm_load_pd数组必须是16字节对齐的。 malloc 不是已经完成了对齐吗?那么为什么会导致访问冲突错误呢?还有什么我可能遗漏的吗?

谢谢。

最佳答案

malloc 通常仅保证 8 字节对齐(double 的对齐)。

如果您想要 16 字节对齐,您可以自行填充分配并适当调整指针,或根据您的平台使用 posix_memalign/_aligned_malloc 来获得必需的对齐。

关于c - 加载由 malloc 分配的数组时发生访问冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27194073/

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