【问题标题】:Dynamic memory allocation with arrays使用数组进行动态内存分配
【发布时间】:2013-04-30 03:26:49
【问题描述】:

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

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

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

cout << pnArray[10] << endl;

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

我用静态数组尝试过这个,结果出错了。

【问题讨论】:

    标签: arrays memory dynamic allocation


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-10
        • 1970-01-01
        • 1970-01-01
        • 2018-09-26
        • 2020-11-12
        • 1970-01-01
        • 2016-04-10
        • 2022-01-15
        相关资源
        最近更新 更多