当我在本教程中阅读有关数组初始化的内容时。我发现了这个注释。
type name [elements];
Run Code Online (Sandbox Code Playgroud)
注意:方括号内的 elements 字段
[]
表示数组中元素的数量,必须是常量表达式,因为数组是静态内存块,其大小必须在程序运行之前的编译时确定。*
据我所知,数组在运行时分配内存。这应该是假条吧?或者这意味着什么?
小智 6
请检查以下答案是否有助于您清楚地了解这一点。
静态数组在堆栈上创建,并且必须具有固定大小(进入函数时需要知道堆栈的大小): int foo[10];
动态数组是在堆上创建的。它们可以有任何大小,但您需要自己分配和释放它们,因为它们不是堆栈帧的一部分: int* foo = new int[10]; 删除[] foo;
您不需要处理静态数组的内存管理,但是当它们所在的函数结束时它们会被销毁
C99 标准(http://en.wikipedia.org/wiki/C99)支持堆栈上可变大小的数组。某些编译器可能实现这些标准并支持可变大小的数组。