我刚刚开始学习动态数组,所以请原谅我,因为这可能是一个简单的问题。
据我所知,我们使用动态数组,因此我们可以在程序运行时重新调整数组的大小。在玩了动态数组之后,我对这段代码感到困惑:
int nSize = 4;
int *pnArray = new int[nSize];
pnArray[10] = 3;
cout << pnArray[10] << endl;
我很困惑,因为我将数组的大小定义为4,但是,我能够将数字的第10个索引分配给数字3.因此,此代码输出3.我不应该得到一个错误?
我尝试使用静态数组并最终收到错误。
答案 0 :(得分:1)
在C ++或C中没有数组边界检查。如果你不小心,你可以很容易地超出数组范围。这是C和C ++中常见的错误类型,使用数组边界外的内存。它甚至可以在很长一段时间内被忽视。
答案 1 :(得分:1)
与其他语言不同,C / C ++中的数组没有限制,这是一些错误的来源。在您的情况下,您正在访问包含一些随机数据的内存位置(数组的第一个元素+10位置)并将其视为整数。