两种创建二维数组方法的区别

时间:2011-09-30 13:58:46

标签: c++ memory-management

两个数组定义有什么区别?他们在记忆中是否有所不同?

 int var = 5;
 int (*p4)[2] = new int [var][2]; // first 2d array

 int** p5 = new int*[var];  // second 2d array
 for(int i = 0; i < var; ++i){
     p5[i] = new int[2];
 }   

2 个答案:

答案 0 :(得分:4)

是的,他们非常不同。第一个是真正的单个阵列;第二个实际上是var+1数组,可能分散在你的RAM中。 var数组保存数据,其中一个包含指向var数据数组的指针。

答案 1 :(得分:1)

第一个是普通的,完全连续的数组,第二个也称为jagged array or lliffe vector,例如用于表示三角形结构。