数组的大小是在编译时确定的吗?

Nay*_*iya 5 c++ arrays

当我在本教程中阅读有关数组初始化的内容时。我发现了这个注释。

type name [elements];
Run Code Online (Sandbox Code Playgroud)

注意:方括号内的 elements 字段[]表示数组中元素的数量,必须是常量表达式,因为数组是静态内存块,其大小必须在程序运行之前的编译时确定。*

据我所知,数组在运行时分配内存。这应该是假条吧?或者这意味着什么?

小智 6

请检查以下答案是否有助于您清楚地了解这一点。

C++ 中的静态数组与动态数组

静态数组在堆栈上创建,并且必须具有固定大小(进入函数时需要知道堆栈的大小): int foo[10];

动态数组是在堆上创建的。它们可以有任何大小,但您需要自己分配和释放它们,因为它们不是堆栈帧的一部分: int* foo = new int[10]; 删除[] foo;

您不需要处理静态数组的内存管理,但是当它们所在的函数结束时它们会被销毁

允许在运行时不动态分配数组大小吗?

C99 标准(http://en.wikipedia.org/wiki/C99)支持堆栈上可变大小的数组。某些编译器可能实现这些标准并支持可变大小的数组。