c++ - 无法创建动态整数数组

标签 c++ arrays dynamic integer dynamic-arrays

我确定它很小,但我不断收到关于我如何在初始化之前尝试使用它的初始化错误。

#include <iostream>
using namespace std;
int main()
{
    int* ordered;

    ordered[0] = 5;
    cout << ordered[0];
    return 0;
}

奖金问题,我可以使用 *ordered 访问起始地址并使用 *ordered++ 循环遍历数组吗?

最佳答案

int* ordered;
ordered[0] = 5;

ordered 是一个未初始化的指针。它指向任何随机地址。取消引用此类指针会导致未定义的行为,并且很可能会使您的程序崩溃。
为了能够用这个指针做一些有意义的事情,它需要指向一些有效的内存区域。您可以这样做:

int *ordered = new[x];

现在,ordered 指向一个足以容纳 x 整数的内存区域。但是,你必须记住在使用后释放内存:

delete []ordered;       

在 C++ 中,您最好使用 std::vector 而不是动态分配的数组,因为您不必使用 new []< 附带的手动内存管理。简单地说,std::vector 很难出错。

关于c++ - 无法创建动态整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14768708/

相关文章:

javascript - 当页面重新加载时,使用 Node js 动态更改数据库中的内容

c# - 向 ASP.NET MVC View 中的表动态添加列

c++ - 将 C++ 函数转换为 MIPS

c++ - 在 boost-variant 中调用匹配类型的析构函数

c++ - 有和没有 "new"的对象定义差异

c - 无法释放动态分配的二维数组

c++ - 有没有办法打印对象的位表示?

javascript - Array.push 修改现有元素

java - 你如何在 Java 中声明一个对象数组?

c - C中使用Malloc正确分配二维数组