我正在使用几个Eigen MatrixXd和VectorXd,但我对动态与固定大小的含义感到有些困惑。根据Eigen文档,固定结构的大小在编译时是已知的。对于我使用的每个Matrix,我在实例化它时定义它们的大小,并且在程序运行时不要改变大小。
更准确地说,我使用的是一个包含多个MatrixXd和VectorXd成员的类,其大小在类的构造函数中定义。这是否意味着它们是动态分配的?因此,我不需要任何类型的优化来加速代码,就像this page上建议的那样,对吧?
我问这个问题的原因是,即使按照Eigen的定义,我使用的是动态大小的结构,我已经多次遇到过以下断言错误,唯一可信的原因是{{ 3}}
[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