C++ 二维数组动态数组上的运行时错误
我有以下代码:C++ 二维数组动态数组上的运行时错误,c++,arrays,dynamic,multidimensional-array,allocation,C++,Arrays,Dynamic,Multidimensional Array,Allocation,我有以下代码: int **arr = new int*[5]; for(int i = 0; i < 5; ++i) arr[i] = new int[]; for(int i = 0; i < 5; ++i) delete [] arr[i]; delete [] arr; int**arr=newint*[5]; 对于(int i=0;i
int **arr = new int*[5];
for(int i = 0; i < 5; ++i)
arr[i] = new int[];
for(int i = 0; i < 5; ++i)
delete [] arr[i];
delete [] arr;
int**arr=newint*[5];
对于(int i=0;i<5;++i)
arr[i]=新整数[];
对于(int i=0;i<5;++i)
删除[]arr[i];
删除[]arr;
现在它编译并运行成功,但是如果我从第一行删除数组大小“5”,代码将编译,但在最后一行由于运行时错误而崩溃。我有以下问题,我没有找到答案在Straustrup的C++书籍,在互联网等< /P>
使用
[5]
,您将得到一个包含5个int*
s的数组
如果删除[5]
,则表示需要指向int
的指针。因此本质上,您有了新的int*[1]
然后用0到4的数字对其进行索引,这超出了范围。此线程应该会有所帮助。这甚至不能在GCC4.6.1.Seth上编译。您的意思是int*[]等同于int*[1]?如果是这样,那么代码应该在第二次迭代期间在第一个“for”循环中崩溃,但事实上它在最后一行崩溃。