我正在编写一个程序,突然遇到了疑问。 我分配静态数组有两种方法。
int main ()
{
int a[10];
}
int main()
{
int N;
cin >> N; //assume i input N as 10
int a[N];
}
两种情况下内存分配有何不同? 将在第二种情况下在运行时分配?
答案 0 :(得分:2)
第二种方式是不允许的。第一种方法是在堆栈上创建内存。一旦main()退出,它将被解除分配。如果你想动态分配最好的方法是使用new:
int* = new int[N];
但是这样你最后必须删除它。如果你可以使用STL,那么只需使用std :: vector:
std::vector<int> a;
答案 1 :(得分:0)
第二个是编译的。但这是错误的。标准C / C ++不允许它。