我已经编写了一些使用1D数组表示矩阵的代码。我目前正在测试较大的输入尺寸。
当我将rows
和cols
设置为50000
时,程序退出并显示代码11。
我尝试打印很多。
double* create_matrix_1d(int n_rows, int n_cols) {
long long len = (long long ) n_rows * (long long) n_cols;
auto* A = new double[len];
int row, col ;
for(row = 0; row < n_rows; row++) {
for( col = 0; col < n_cols; col++) {
int i = col + row * n_cols;
A[i] = 1; //static_cast <int> (rand()) % 10 ;
}
}
return A;
}
最佳答案
让我们计算所需的内存。一个double通常使用8个字节,因此您的矩阵需要:
50000*50000*8 = 20000000000 bytes
记忆
20000000000 bytes = 20000000000 / 1024 = 19531250 kb
19531250 / 1024 = 19073 Mb
19073 / 1024 = 18.6265 Gb
因此,除非您的计算机具有超过19 Gb的RAM,否则出现内存不足错误是正常的
关于c++ - 创建大型1D矩阵返回导出11,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56207425/