首页 > 解决方案 > 创建返回出口 11 的大型一维矩阵

问题描述

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

当我设置rowscols50000代码 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;
}

标签: c++matrix

解决方案


让我们计算所需的内存。双精度通常使用 8 个字节,因此您的矩阵需要:

50000*50000*8 = 20000000000 bytes

记忆的

20000000000 bytes = 20000000000 / 1024 = 19531250 kb

19531250 / 1024 = 19073 Mb

19073  / 1024 = 18.6265 Gb

因此,除非您的计算机具有超过 19 Gb 的 RAM,否则出现内存不足错误是正常的


推荐阅读