我已经编写了一些使用1D数组表示矩阵的代码。我目前正在测试较大的输入尺寸。

当我将rowscols设置为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/

10-11 23:04
查看更多