具有大小动态分配和预定大小的简单阵列存储器分配

时间:2014-07-09 15:52:09

标签: c++ c arrays memory-management dynamic-arrays

我正在编写一个程序,突然遇到了疑问。 我分配静态数组有两种方法。

int main ()
{ 
   int a[10];
}
int main()
{
    int N;
    cin >> N;  //assume i input N as 10
    int a[N];
}

两种情况下内存分配有何不同? 将在第二种情况下在运行时分配?

2 个答案:

答案 0 :(得分:2)

第二种方式是不允许的。第一种方法是在堆栈上创建内存。一旦main()退出,它将被解除分配。如果你想动态分配最好的方法是使用new:

int* = new int[N];

但是这样你最后必须删除它。如果你可以使用STL,那么只需使用std :: vector:

std::vector<int> a;

答案 1 :(得分:0)

第二个是编译的。但这是错误的。标准C / C ++不允许它。