C++ 在c+中创建动态内存+;

C++ 在c+中创建动态内存+;,c++,visual-c++,C++,Visual C++,我正在尝试创建一个动态内存。数组的大小由用户输入决定。我得到以下错误, “表达式必须具有常量值” 看来我做错了什么。请帮帮我!我怎样才能使它充满活力 这就是我到目前为止所做的: int* IntPtr = NULL; int main(){ int arraySize; cout << "How many numbers will be on the list? "; cin >> arraySize; IntPtr = new int[arraySize];

我正在尝试创建一个动态内存。数组的大小由用户输入决定。我得到以下错误,
“表达式必须具有常量值”

看来我做错了什么。请帮帮我!我怎样才能使它充满活力

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

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;
int*IntPtr=NULL;
int main(){
内部阵列化;
排列;
IntPtr=新的int[arraySize];
联系人列表[AraySige];//p>您正在尝试使用。不幸的是,C++不允许它们。(虽然有些编译器允许它们通过扩展)

相反,您需要的是使用
new
动态分配数组(稍后使用
delete
手动取消分配)

您已经通过以下方式正确执行了此操作:

IntPtr = new int[arraySize];
现在,您可以对
列表
变量执行相同的操作:

Contact *list = new Contact[arraySize];
delete [] list;
或者,您可以使用
vector
类,该类通常优于动态数组

vector<Contact> list(arraySize);
向量列表(arraySize);
<>代码> 你尝试使用。不幸的是,C++不允许它们。(虽然有些编译器允许它们通过扩展)

相反,您需要的是使用
new
动态分配数组(稍后使用
delete
手动取消分配)

您已经通过以下方式正确执行了此操作:

IntPtr = new int[arraySize];
现在,您可以对
列表
变量执行相同的操作:

Contact *list = new Contact[arraySize];
delete [] list;
或者,您可以使用
vector
类,该类通常优于动态数组

vector<Contact> list(arraySize);
向量列表(arraySize);
请改用,或者如果要分配裸阵列,请执行与
IntPtr
相同的操作:

Contact* list = new Contact[arraySize]; 
改为使用,或者如果要分配裸阵列,请执行与使用
IntPtr
相同的操作:

Contact* list = new Contact[arraySize]; 
·改用
std::vector
。然后你甚至不需要知道最终大小。你可以向用户索要另一个数字,然后使用
push_back
方法将其添加到向量中,然后向量会根据需要增长。干杯&hth。·改用
std::vector
。然后你甚至不需要知道最终大小。你可以a只需向用户请求另一个数字,然后使用
push_back
方法将其添加到向量中,然后向量会根据需要增长。干杯。,