无法创建动态整数数组

时间:2013-02-08 08:43:59

标签: 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++循环遍历数组吗?

2 个答案:

答案 0 :(得分:5)

int* ordered;
ordered[0] = 5;

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

int *ordered = new[x];

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

delete []ordered;       

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

答案 1 :(得分:4)

问题是没有与ordered相关的记忆。你有一些选择:

  • 使用ordered
  • new[]分配一些内存
  • 使用std::vector<int>代替

如果你使用vector,你可以在开头分配内存,或者使用push_back方法,这样可以根据需要增加内存。