C++ 本征矩阵的最大尺寸是多少?

C++ 本征矩阵的最大尺寸是多少?,c++,eigen,eigen3,C++,Eigen,Eigen3,在我的例子中(64位ubuntu,16GB内存,使用Eigen3),我写MatrixD m(m,m);其中M=100000,程序在运行时崩溃,并报告: what():std::bad_alloc 中止(堆芯转储) 使用动态2维阵列,程序运行良好。在Eigen中(密集)矩阵的大小是否有硬限制?您试图分配每个8字节的100000*100000元素,或者800000000字节(74.5GB),这是失败的,因为您只有16GB的内存。这会导致内存分配失败,因为它找不到一个如此大的连续内存块 在Eigen中

在我的例子中(64位ubuntu,16GB内存,使用Eigen3),我写MatrixD m(m,m);其中M=100000,程序在运行时崩溃,并报告:

what():std::bad_alloc
中止(堆芯转储)


使用动态2维阵列,程序运行良好。在Eigen中(密集)矩阵的大小是否有硬限制?

您试图分配每个8字节的
100000*100000
元素,或者800000000字节(74.5GB),这是失败的,因为您只有16GB的内存。这会导致内存分配失败,因为它找不到一个如此大的连续内存块


在Eigen中没有固定的限制,但是数组确实需要在您的系统上分配。

您忘记了矩阵元素的大小

MatrixXd使用双精度

100000*100000=1000000000个元素

sizeof(double)在您的系统上可能是8

这意味着,为了创建此矩阵,您需要:


宽度*高度*大小(双)=>100000*100000*8/(1024*1024*1024)=>74.5G内存