我突然意识到,当使用 Debug模式(-g3 -DDEBUG)编译我的程序(使用Eigen)时,出现运行时断言错误

Assertion failed: (v == T(Value)), function variable_if_dynamic, file /Users/vlad/eigen_3.2.2/Eigen/src/Core/util/XprHelper.h, line 53

我无法弄清楚这到底发生在哪里以及为什么。我在唯一使用Eigen成员的类中也使用了EIGEN_MAKE_ALIGNED_OPERATOR_NEW,因为我认为这可能是对齐问题,但仍然不能解决问题。有人撞过吗?发行版可以编译并正常运行,断言仅在 Debug模式下出现。

最佳答案

这与对齐无关,但与编译时值和运行时值之间的不匹配有关,这意味着您的代码中可能包含以下内容:

Matrix<double,3,Dynamic> mat(4,5);

其中运行时行数4与编译时行数3不匹配。调试器将帮助您找到起因的行。

07-27 21:07