【发布时间】:2017-02-20 18:02:40
【问题描述】:
我遇到过这么神秘的分段错误。
#include <stdio.h>
#include <immintrin.h>
struct Box{
__m256i L;
};
int main()
{
struct Box *result=NULL;
result=(struct Box *)malloc(sizeof(struct Box));
(*result).L=(*result).L;
}
使用标志-msse4.2 -march=corei7-avx编译
它在我的 Mac 上运行良好(OS X EI Caption 10.11.6,GCC 4.8.4)。 但它给了我 Amazon EC2 机器上的分段错误(Ubuntu 14.04,GCC 4.8.4)。
当我稍作改动时:
#include <stdio.h>
#include <immintrin.h>
struct Box{
__m256i L;
};
int main()
{
struct Box result[1];
(*result).L=(*result).L;
}
它将能够在 Ubuntu 机器上运行。
有人对此有任何解释吗?
【问题讨论】:
-
malloc 不保证 32B 对齐的内存。