我有以下代码:
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 ++书籍,互联网等中找到答案。
答案 0 :(得分:3)
使用[5]
,您将得到5个int*
的数组。
如果删除[5]
,则表示您需要指向int
指针的指针。基本上,你有new int*[1]
。
然后你用0到4之间的数字索引它,这是超出界限的。