【发布时间】:2016-02-13 00:52:27
【问题描述】:
据我所知,动态分配的二维数组应该是这样分配的:
int **rows = new int*[7];
//for loop assigning all seven rows[i] a "new int[4]"
但是,以下内容也适用于我:
int (*ptr)[4] = new int[7][4]; //create dynamic 2d array
for(int i = 0; i < 7; ++i) //initialize and test
{
for(int j = 0; j < 4; ++j)
{
ptr[i][j] = i + j;
cout << ptr[i][j] << ' ';
}
cout << endl;
}
delete[] ptr;
/*
output:
0 1 2 3
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
5 6 7 8
6 7 8 9
*/
当我可以用这一行创建动态二维数组时,为什么要使用我首先提到的更复杂的方法:
int (*ptr)[4] = new int[7][4];
感谢任何见解!
(我没有发现使用 valgrind 的内存泄漏。)
【问题讨论】:
标签: c++ arrays heap-memory