我有如下代码:
现在它已经成功编译和运行,但是如果我从第一行中删除数组大小“5”,代码就会编译,但在最后一行崩溃。我有以下问题,但在Straustrup的C++书籍,互联网等方面均未找到答案。
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;
现在它已经成功编译和运行,但是如果我从第一行中删除数组大小“5”,代码就会编译,但在最后一行崩溃。我有以下问题,但在Straustrup的C++书籍,互联网等方面均未找到答案。
- 为什么代码在指定情况下会崩溃?(我猜测是delete []无法找到要删除的数组大小而导致崩溃。)
- 如果不允许分配多维数组而不指示大小,为什么编译器在编译时没有捕获此类错误?