【问题标题】:C static vs. dynamic allocation [duplicate]C静态与动态分配[重复]
【发布时间】:2018-10-01 17:58:06
【问题描述】:

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

int n = 5;
int arr[n];

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

【问题讨论】:

标签: c


【解决方案1】:

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

【讨论】:

  • Python 在执行代码之前也会被编译。实际上几乎所有通用语言都是。
猜你喜欢
  • 2020-12-05
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
  • 2021-01-16
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-23
相关资源
最近更新 更多