用c ++创建动态内存

时间:2011-12-08 01:40:48

标签: c++ visual-c++

我正在尝试创建动态内存。数组的大小由用户输入决定。我收到以下错误, "expression must have a constant value"

好像我做错了什么。请帮我!我怎样才能让这种动态变化?

这是我到目前为止所做的:

int* IntPtr = NULL;
int main(){

 int arraySize;
 cout << "How many numbers will be on the list? ";
 cin >> arraySize;

 IntPtr = new int[arraySize];

Contact list[arraySize]; // <-- expression must be constant

//more code

delete [] IntPtr;

2 个答案:

答案 0 :(得分:5)

您正在尝试使用Variable Length Arrays。不幸的是,C ++不允许它们。 (虽然有些编译允许它们扩展)

您需要的是使用new动态分配数组。 (并稍后用delete

手动解除分配

您已经正确地执行了此操作:

IntPtr = new int[arraySize];

现在您可以对list变量执行相同的操作:

Contact *list = new Contact[arraySize];
delete [] list;

或者,您可以使用vector类,这通常比动态数组更受欢迎。

vector<Contact> list(arraySize);

答案 1 :(得分:3)

改为使用std::vector<Contact>,或者如果要分配裸阵列,请执行与IntPtr相同的操作:

Contact* list = new Contact[arraySize];