这是多维数组中内存空间的冗余分配吗?

时间:2015-03-19 05:03:05

标签: java multidimensional-array

来自维基百科上的Matrix Chain Multiplication页面,有一段Java代码片段:

public void matrixChainOrder(int[] p) {
    int n = p.length - 1;
    m = new int[n][n];
    s = new int[n][n];
    for (int i = 0; i < n; i++) {
        m[i] = new int[n];
        m[i][i] = 0;
        s[i] = new int[n];
    }
    ...

Isn&#39; t m = new int[n][n];已在其维度中分配大小为n的内存空间,因此循环m[i] = new int[n];中的此步骤实际上是多余的,因为它所做的只是重新分配第二步再次维度?

1 个答案:

答案 0 :(得分:10)

是的,确实如此。

m[i] = new int[n];绝对是多余的。似乎这一行是来自c式psedocode的遗产,其中这种启动是无关紧要的。