【问题标题】:Structures having fixed-size Eigen objects as member and containers具有固定大小的 Eigen 对象作为成员和容器的结构
【发布时间】:2013-02-20 10:25:21
【问题描述】:

我有一个结构,其中包含一个固定大小的 Eigen 对象作为成员,我想将其用作 Lemon 的边缘图:

struct EdgeStatus
{
    Matrix<float,3,4> Data;
    …
    EIGEN_MAKE_ALIGNED_OPERATOR_NEW
};

ListGraph::EdgeMap<EdgeStatus> edgeMap(mygraph);

代码编译正常,但出现运行时错误:

include/Eigen/src/Core/DenseStorage.h:56: Eigen::internal::plain_array<T, Size, MatrixOrArrayOptions, 16>::plain_array()
[with T = float, int Size = 12, int MatrixOrArrayOptions = 0]: Assertion `(reinterpret_cast<size_t>(array) & 0xf) == 0
&& "this assertion is explained here: " "http://eigen.tuxfamily.org/dox-devel/TopicUnalignedArrayAssert.html" " **** READ THIS WEB PAGE !!! ****"' failed.
Aborted

我应该如何解决这个问题? (我已经包含了EIGEN_MAKE_ALIGNED_OPERATOR_NEW 宏。)

【问题讨论】:

    标签: struct eigen lemon-graph-library


    【解决方案1】:

    我不知道 LEMON 库,但如果 ListGraph::EdgeMap 允许您指定分配器,那么您必须使用我们的aligned_allocator

    否则您必须为您的成员放弃矢量化,如下所示:

    struct EdgeStatus
    {
      Matrix<float,3,4, Eigen::DontAlign> Data;
      // ...
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-11
      • 1970-01-01
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      相关资源
      最近更新 更多