【发布时间】:2011-08-16 08:35:47
【问题描述】:
malloc 函数总是在堆上分配内存。但是,在研究Escape Analylis Article on Wikipedia 时,我了解到作为一种优化,编译器可以将堆分配转换为堆栈分配。例如,如果它发现分配的内存只被使用,然后在函数内部被释放。
现在我的问题是,有没有办法让程序员自己这样做。那就是在堆栈上分配内存?我知道 C99 允许将变量作为数组声明的大小给出,但说程序员想要调整它的大小。能做到吗?
【问题讨论】:
-
为什么你想这样做?
-
C99 不要求您“一开始就分配”。您可以在代码中的任何位置“分配”VLA。但无法调整大小。
-
“不是一开始”是什么意思?调整大小有什么意义?
标签: c optimization compiler-construction