这是多维数组中内存space的冗余分配吗?
Is this a redundant allocation of memory space in a multi dimensional 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];
}
...
是不是 m = new int[n][n];
已经在其两个维度上分配了大小为 n
的内存 space,所以循环 m[i] = new int[n];
中的这个步骤实际上是多余的,因为它所做的一切又是重新分配二次元?
是的,是的。
m[i] = new int[n];
绝对是多余的。这条线似乎是 c
风格的伪代码的遗产,其中这种初始化是必要的。
在维基百科的 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];
}
...
是不是 m = new int[n][n];
已经在其两个维度上分配了大小为 n
的内存 space,所以循环 m[i] = new int[n];
中的这个步骤实际上是多余的,因为它所做的一切又是重新分配二次元?
是的,是的。
m[i] = new int[n];
绝对是多余的。这条线似乎是 c
风格的伪代码的遗产,其中这种初始化是必要的。