在当前函数退出之前,是否可以显式释放由C的alloca()分配的内存?如果是这样,怎么样?
来自http://www.gnu.org/software/libc/manual/html_mono/libc.html#Variable-Size-Automatic:
分配块
alloca
是一个明确的动作; 您可以根据需要分配任意数量的块,并在运行时计算大小.但是当你退出调用alloca的函数时,所有的块都被释放,就好像它们是在该函数中声明的自动变量一样.没有办法明确释放空间.
这是可能的,但没有预先编写的功能.您必须深入研究编译器的alloca()实现,以弄清楚它在做什么,然后编写自己的freea().由于每个编译器都以不同方式执行alloca(),因此您必须为每个编译器重写freea().
但我发现很难相信这会值得这么麻烦.如果你需要明确地释放它,只需使用malloc/free - 这些功能通常都经过了大量优化.利用它们.