本文介绍了返回指针的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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-21 13:47