具有动态阵列的大矩阵

时间:2013-10-28 18:26:02

标签: c++ arrays dynamic dynamic-arrays

我必须创建一个大矩阵(即10,000x10,000),并将脊柱作为浮点指针数组:

 typedef float* DynamicMatrix[MAT_SIZE];
 DynamicMatrix matDyn;

现在我必须分配行并将它们初始化为零。

// allocate rows and initialize to 0
    for (r = 0; r < MAT_SIZE; r++) {
        matDyn[r] = new float[MAT_SIZE];
        for (c = 0; c < MAT_SIZE; c++) {
            matDyn[r][c] = 0;
        }
    }

我的分配和初始化是否正确?

按照我上面的方式分配数组和浮动DynamicMatrix [10,000] [10,000]之类的内容有什么区别?

1 个答案:

答案 0 :(得分:0)

声明

float DynamicMatrix[10000][10000];

在堆栈上声明10000 x 10000个连续存储浮点数。这可能是您的机器可能无法在一个块中实现的高级订单。对于大多数具有4字节浮点数的计算机,可以处理400 MB的数据。

另一方面,在指向向量的指针数组中,每一行数据都在堆上单独分配。这对于分配器来说可能更容易实现。另一方面,连接存储在访问方面可以非常快。