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

C++ Bus Error during Pointer arithmetic

我正在努力学习 C++,尤其是。指针及其算术。我正在使用 XCode 编译和 运行 我的程序。

下面我有两组代码试图创建一个 3D 整数数组。第一个代码编译 运行s 没有错误,但第二个代码编译没有错误但在 运行.

时生成 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;
}

错误截图:

第 8 行递增 i 而不是 j:

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

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