在读程序源代码时,时不时地看到alloca这个函数。一开始并没有多在意,直到今天看<<APUE>>时才留意了下。
微软MSVC提供的是_alloca。
简要说明:
- 它的动作方式及功能跟malloc差不多,都是内存分配。但alloca是在当前调用者函数的栈帧上分配的,而不是在堆中。
优点:
- 当函数返回时,自动释放该内存。无需手动释放。
缺点:
- 增加了栈帧的长度,而某些系统不支持增加栈帧长度,于是就不能支持alloca函数。
- 如果分配内存时导致栈溢出,程序的行为是未知的。
参考:
时间: 2024-09-30 00:27:21