我开始学习 C++,我想实现一个简单的 2D 数组并在不使用std::vector
. 但是,我的第二维遇到了奇怪的错误:
int **data= new int*[2];
for (int i = 0; i<2;i++){
data[i] = new int[3];
}
data[0][0] = 1;
data[0][1] = 2;
data[0][2] = 3;
data[1][0] = 4;
data[1][1] = 5;
data[1][2] = 6;
data[1][25] = 20; //Should segfault? AAAAA
cout << "Data[1][25] = " << data[1][25] << endl; //Should segfault, no?
int n = sizeof(data[0]) / sizeof(int);
int m = sizeof(data) / sizeof(int);
cout << "M is " << m << " N is " << n << endl;// Reports m = 2, n =2?!?!? BBBB
在AAAA
我应该得到段错误,不是吗?相反,我可以分配一个值,然后再读取它。的值data[1][any]
为零,就像它已被初始化一样。这只是第二个维度的问题,第一个维度的行为符合预期。
后来BBBB
我没有得到准确的尺寸n
。难道我做错了什么?