在 C 中,声明具有运行时确定大小的数组的概念经常引起关注。然而,最近遇到的一个特殊的代码片段引发了一个问题:如何在不动态分配的情况下声明数组,同时在运行时指定其大小?
考虑以下 C 代码:
int main(int argc, char **argv) { size_t size; cin >> size; int array[size]; for (size_t i = 0; i < size; i++) { array[i] = i; cout << i << endl; } return 0; }
GCC 等编译器采用了 C99 中允许可变大小数组的功能。这一创新功能使得可以在堆栈上声明数组,其大小可以在执行期间确定。但是,与使用 new 或 malloc 进行动态分配不同,可变大小的数组在堆栈上分配内存,类似于声明具有固定大小的数组。
可变大小的数组比动态分配具有性能优势,因为它们避免了堆内存管理的开销。通过在堆栈上分配内存,这些数组减少了内存碎片的机会并增强了程序性能。
需要强调的是,此功能是 C99 独有的,旧版本的 C 语言不支持。因此,如果您遇到依赖于可变大小数组的代码,请确保使用符合 C99 的编译器进行编译,以避免存储大小错误。
以上是如何在没有动态内存分配的情况下在 C 中声明运行时大小的数组?的详细内容。更多信息请关注PHP中文网其他相关文章!