C语言中的alloca内存分配函数

陪她去流浪 桃子 2014年12月19日 阅读次数:2351

在读程序源代码时,时不时地看到alloca这个函数。一开始并没有多在意,直到今天看《APUE》时才留意了下。

微软MSVC提供的是_alloca。

简要说明:

  • 它的动作方式及功能跟malloc差不多,都是内存分配。但alloca是在当前调用者函数的栈帧上分配的,而不是在堆中。

优点:

  • 当函数返回时,自动释放该内存。无需手动释放。

缺点:

  • 增加了栈帧的长度,而某些系统不支持增加栈帧长度,于是就不能支持alloca函数。
  • 如果分配内存时导致栈溢出,程序的行为是未知的。

参考:

这篇文章的内容已被作者标记为“过时”/“需要更新”/“不具参考意义”。

标签:内存管理 · C/C++