本文介绍了返回指针的alloca的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是否code返回的无效引用在栈上分配的变量?或者是什么:
Does this code return an invalid reference to a variable allocated on the stack? Or what:
void *f(size_t sz) {
return alloca(sz);
}
抑或是受了alloca执行/编译器的支持,比如 F(的alloca(大小)的alloca(大小))
处理将是一个特例?
推荐答案
的alloca
分配在的堆栈帧空间F
。你不能做任何有用的东西与它曾经在函数返回(它没有保留了)。
alloca
allocates space in the stack frame of f
. You can't do anything useful with it once the function returns (it's not "reserved" anymore).
中,alloca()函数分配的空间大小字节堆栈帧
的调用者。此临时空间的自动释放时,
即所谓的alloca()函数返回给调用者
这篇关于返回指针的alloca的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!