2013-04-30 75 views
0

我刚开始学习动态数组,所以请原谅我,因为这可能是一个简单的问题。动态内存分配与阵列

从我所学到的,我们使用动态数组,因此我们可以在程序运行时重新调整数组的大小。播放动态数组的身边后,我糊涂了与这段代码:

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

cout << pnArray[10] << endl; 

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

我试着用静态数组,并最终得到一个错误。

回答

1

在C++或C中没有数组边界检查。所以如果你不小心,你可以很容易地超出数组的范围。这是C和C++中发生的一种常见类型的错误,它使用数组范围外的内存。它甚至可能在一段时间内被忽视。

1

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