指针运算期间的 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,因此内循环永远不会终止。
我正在努力学习 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,因此内循环永远不会终止。