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))?
alloca在堆栈框架中分配空间f.一旦函数返回(它不再是"保留"),你就无法用它做任何有用的事情.
alloca()函数在调用者的堆栈帧中分配空间的大小字节.当调用alloca()的函数返回其调用者时,将自动释放此临时空间.