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

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

微软MSVC提供的是_alloca。

简要说明:

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

优点:

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

缺点:

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

参考:

  • Why is alloca not considered good practice?
  • man7.org/linux/man-pages/man3/alloca.3.html

 

你可能感兴趣的:(C语言中的alloca内存分配函数)