繁体   English   中英

使用数组分配动态内存

[英]Dynamic memory allocation with arrays

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

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

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

cout << pnArray[10] << endl;

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM