简单的数组内存分配与大小动态分配和预定的大小

Simple array memory allocation with size dynamic allocated and predetermined size

本文关键字:动态分配 数组 内存 分配 简单      更新时间:2023-10-16

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

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

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

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

int* = new int[N];

但是这样的话,你最终必须删除它。如果你不介意使用STL,那就用std::vector:

std::vector<int> a;

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