0

我刚开始学习动态数组,请原谅我,因为这可能是一个简单的问题。

据我所知,我们使用动态数组,因此我们可以在程序运行时重新调整数组的大小。在玩弄了动态数组之后,我对这段代码感到困惑:

int nSize = 4;
int *pnArray = new int[nSize];
pnArray[10] = 3;

cout << pnArray[10] << endl;

我很困惑,因为我将数组的大小定义为 4,但是,我能够为数组的第 10 个索引分配数字 3。因此,此代码输出 3。我不应该得到一个错误吗?

我用静态数组尝试了这个,最终得到了一个错误。

4

2 回答 2

1

C++ 或 C 中没有数组边界检查。因此,如果您不小心,很容易超出数组的边界。这是 C 和 C++ 中常见的错误类型,使用数组边界之外的内存。它甚至可以在很长一段时间内被忽视。

于 2013-04-30T03:54:39.683 回答
1

与其他一些语言不同,C/C++ 中的数组没有限制,这是一些错误的根源。在您的情况下,您正在访问包含一些随机数据并将其视为整数的内存位置(数组的第一个元素+10 位置)。

于 2013-04-30T04:01:52.537 回答