我正在努力学习C ++,尤其是。指针及其算术。我正在使用XCode编译和运行我的程序。
下面我有两组代码尝试创建一个3D整数数组。第一个代码编译并运行没有错误,但第二个代码编译没有错误,但在运行时生成EXC_BAD_ACCESS。
当我尝试使用g ++编译并从终端运行时,第二个代码生成Bus Error: 10
。
有谁能告诉我为什么第二组代码没有成功运行,虽然对我来说它看起来非常相似?
代码1:编译+成功运行
int main(){
int i, j, k;
int*** dim = new int**[3];
for (i=0; i<3; i++) {
dim[i] = new int* [3];
for(j = 0; j < 3; j++) {
*(*(dim+i)+j) = new int[3];
}
}
return 0;
}
代码2:成功编译但在运行时生成EXC_BAD_ACCESS/Bus Error: 10
int main(){
int i, j, k;
int*** dim = new int**[3];
for (i=0; i<3; i++) {
dim[i] = new int* [3];
}
for (i=0; i<3; i++) {
for(j=0; j<3; i++)
*(*(dim+i)+j) = new int[3];
}
return 0;
}
答案 0 :(得分:5)
第8行正在递增i而不是j:
for(j=0; j<3; i++)
答案 1 :(得分:3)
for(j=0; j<3; i++)
增加i,而不是j,因此内部循环永远不会终止。