【发布时间】:2015-01-15 05:01:17
【问题描述】:
我的程序中有一行代码:
float cache[featureHeight-1];
其中 featureHeight 是一个函数参数。现在,当 C 编译器将其转换为汇编时,它如何知道要分配多少堆栈空间,因为 featureHeight 在编译时是未确定的?还是编译器会在后台将此转换为 malloc 调用?
(顺便说一句,C99,没有编译器错误或警告,代码运行完美)
【问题讨论】:
-
这是在 C99 中添加的,但在 C11 中是可选的,因此您需要(或应该)在使用之前检查是否定义了宏(我忘记了确切的名称),并使用 malloc 和 free相反,如果它不可用。这将在堆栈上分配内存,直到该特定函数返回。 (所以不要做
return cache;之类的事情) -
@technosaurus 你在关注
__STDC_NO_VLA__。