首页 > 解决方案 > 为什么我可以通过 C++ 中的用户输入来初始化数组的大小?

问题描述

鉴于用户输入是在运行时获取的,但数组是在编译时创建的。这段代码如何以及为什么起作用?

#include <iostream>
using namespace std;
int main(){
    int n;
    cin>>n;
    int arr[n]; //Why can I use this statement to create an array?
}

标签: c++arraysvariable-length-array

解决方案


这是一个非标准的扩展,由 gcc 和 clang 支持。

它通过在声明数组时在堆栈上分配空间来工作,有点像alloca.

当函数返回(或arr超出范围)时,分配的内存会自动释放(通过调整堆栈指针)。


推荐阅读