C++ 本征矩阵的最大尺寸是多少?
在我的例子中(64位ubuntu,16GB内存,使用Eigen3),我写MatrixD m(m,m);其中M=100000,程序在运行时崩溃,并报告: what():std::bad_allocC++ 本征矩阵的最大尺寸是多少?,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中
中止(堆芯转储)
使用动态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内存谢谢,在2D数组的情况下,我忘记C++ C++不会分配实际的空间,直到程序访问它,所以我假设内存仍然足够大用于矩阵。谢谢,在2D数组的情况下,我忘记了C++不会分配实际的空间直到程序访问它,所以我认为内存对于矩阵来说仍然足够大。