C静态与动态分配

时间:2018-04-21 01:08:06

标签: c

我知道静态(由编译器确定)和动态(在运行时确定)分配之间的区别。我不明白的是,在我们遇到如下情况时会发生什么:

int n = 5;
int arr[n];

arr没有分配malloc,所以它不能放在堆上。但是,它也不能静态分配,因为程序必须运行才能确定a的大小。那么如何分配arr?

1 个答案:

答案 0 :(得分:-2)

程序不需要运行来确定a的大小。与Python或其他语言不同,C在运行之前编译。 编译器生成具有5个位置的arr的正确位置的程序集。