以下代码为什么会导致段错误?
#include <vector>
#include <emmintrin.h>
struct point {
__m128i v;
point() {
v = _mm_setr_epi32(0, 0, 0, 0);
}
};
int main(int argc, char *argv[])
{
std::vector<point> a(3);
}
谢谢
编辑:我正在使用Linux/i686上的g++ 4.5.0,我可能不知道我在这里做什么,但是因为即使以下代码也会导致段错误:
int main(int argc, char *argv[])
{
point *p = new point();
}
我真的认为这一定是对齐问题。
v
没有正确对齐。但是由vector
动态分配,所以不会受到堆栈未对齐问题的影响。尽管如此,在尝试分配之前,最好先打印出v
的地址,以确保它已经正确分配。 - Ben Voigt