所以,当我尝试声明一个大于10000x10000的矩阵时,我发现Eigen包崩溃了.我需要声明一个这样的矩阵..可靠地约13000x13000个元素.我跑了一个测试:
for( int tortureEigen = 1 ; tortureEigen < 50000 ; tortureEigen++ )
{
printf( "Torturing Eigen with %dx%d..\n", tortureEigen, tortureEigen ) ;
Eigen::MatrixXd m( tortureEigen, tortureEigen ) ;
}
Run Code Online (Sandbox Code Playgroud)
在我的机器(6 GB RAM)上以14008个元素崩溃.
我有点失望!我认为Eigen就像MATLAB或octave,不应该使用更大的数组崩溃,即使它确实击中了磁盘或其他东西.
而且当我运行此测试并保持TaskMan打开时,创建这些矩阵的过程甚至不会使用那么多内存.TaskMan报告的使用量低于2k.
使用Eigen 2.0.15稳定释放
小智 5
特征开发者在这里.在我们的支持渠道上询问Eigen问题会好得多,例如论坛...... ;-)
简短回答:你使用固定或动态大小的矩阵吗?
如果是固定尺寸,切换到动态尺寸(对于如此巨大的尺寸,无论如何都是不费脑子的)
如果你得到动态大小的矩阵的错误,我很惊讶,但同时我可以看到值10000来自哪里.无论如何,如果你升级到eigen3(开发分支),你的问题就会消失.