1

我正在使用一个使用 Eigen 库的项目。我已经解决了一个问题,即在 STL 中使用 eigen 提供的数据类型时,出现对​​齐错误

错误 C2719: '_Val': 带有 __declspec(align('16')) 的形式参数不会对齐

一旦解决了这个问题,我就可以编译和运行了。

但是现在在运行时我遇到了另一个错误

调试错误!

R6010

abort() 已被调用。

所以有问题的代码引用了我的结构和我的结构的向量(带有特别对齐的特征):

typedef struct {
    Vector4f v4;
    Matrix4f M4;
    bool b;
} my_struct;

typedef std::vector<my_struct, Eigen::aligned_allocator<my_struct>> my_struct;

然后我的代码在经过一定次数的迭代后尝试创建新的 my_struct 后失败(它有时可以创建新对象,没有问题),其他时候失败。

for (int i = 0; i<len; i++) {
    Vector4f vec;
    Matrix4f mat;

     my_struct* temp = new my_struct();

}

有任何想法吗?汤姆

4

1 回答 1

2

Without -DNDEBUG, you should have got an assert sending you to this page. In your case, you should follow this one. In short, add EIGEN_MAKE_ALIGNED_OPERATOR_NEW to your structure such that new my_struct call an aligned memory allocator.

于 2013-06-04T23:31:27.877 回答