0

我正在使用几个 Eigen MatrixXd 和 VectorXd,但我对什么是动态与固定大小感到有些困惑。根据 Eigen 文档,固定结构的大小在编译时是已知的。对于我使用的每个矩阵,我在实例化它们时定义它们的大小,并且在程序运行时不要更改大小。

更准确地说,我正在使用一个包含多个 MatrixXd 和 VectorXd 成员的类,它们的大小在类的构造函数中定义。这是否意味着它们是动态分配的?因此,我不需要任何类型的优化来加速代码,就像这个页面上建议的那样,对吧?

我问这个的原因是即使根据 Eigen 的定义我使用的是动态大小的结构,我已经多次遇到以下断言错误,唯一可能的原因是建议文档页面上的Cause no.1 。

[darwin-pi2] darwin-pi2: /usr/include/Eigen/src/Core/DenseStorage.h:67: Eigen::internal::plain_array<T, Size, MatrixOrArrayOptions, 16>::plain_array() [with T = double; int Size = 32400; int MatrixOrArrayOptions = 0]: Assertion `(reinterpret_cast<size_t>(eigen_unaligned_array_assert_workaround_gcc47(array)) & 0xf) == 0 && "this assertion is explained here: " "http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html" " **** READ THIS WEB PAGE !!! ****"' failed
4

0 回答 0