首页 > 解决方案 > 理解 C++ 中的动态内存的困惑

问题描述

C++ 动态内存说,我们将分配我们需要的内存,对吧?所以从某种意义上说,它创建了一个运行时间,就像我们可以从用户获取我们需要的大小的输入,然后分配内存。

就像在这里我创造了一个元素的记忆,

int *x = new int[1]

那么这会分配 1 个元素的内存数组大小,这将只允许一个元素,但是我在这里编写程序,它也适用于 100 个元素,为什么?

    #include <iostream>

int main() {
    int *x = new int[1];
    for (int j = 0; j < 100; j++) {
        x[j] = j;
    }
    for (int k = 0; k < 100; k++) {
        std::cout << x[k] << std::endl;
    }

    return 0;
}

这是完整的代码链接 http://cpp.sh/8oyb7

上面的这个程序在 MS Visual Studio 中出错,但在其他编译器中工作,如 CLang、GNC C++、Cmake 等。

抱歉,如果问题很愚蠢,但我想清楚地理解这个概念。非常感谢。

标签: c++memorydynamic

解决方案


推荐阅读