返回alloca指针

use*_*904 0 c stack pointers memory-management alloca

此代码是否返回对堆栈上分配的变量的无效引用?或者是什么:

void *f(size_t sz) {
    return alloca(sz);
}
Run Code Online (Sandbox Code Playgroud)

或者这是一个由alloca实现/编译器支持处理的特殊情况f(alloca(size), alloca(size))

cni*_*tar 5

alloca在堆栈框架中分配空间f.一旦函数返回(它不再是"保留"),你就无法用它做任何有用的事情.

alloca()函数在调用者的堆栈帧中分配空间的大小字节.当调用alloca()的函数返回其调用者时,将自动释放此临时空间.