指针运算期间的C ++总线错误

时间:2015-10-31 12:48:06

标签: c++ arrays pointers g++ xcode7

我正在努力学习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;
}

错误的屏幕截图: Error Screenshot

2 个答案:

答案 0 :(得分:5)

第8行正在递增i而不是j:

for(j=0; j<3; i++)

答案 1 :(得分:3)

for(j=0; j<3; i++)

增加i,而不是j,因此内部循环永远不会终止。