我们可以使用GCC的内联函数吗?

时间:2015-04-15 01:50:03

标签: c gcc stack inline

据我所知,内联函数是调用者中替换的代码,这意味着内联函数中编写的任何代码都存在于最后一个函数的堆栈框架中。我碰巧遇到需要动态分配内存而不使用malloc的情况。那么,有没有办法让我在内联函数中分配一个可变长度数组,并在函数终止时保持它 - 你知道,因为堆栈并没有真正展开。

谢谢!

编辑:

我所拥有的是一个在信号处理程序上下文中调用的函数,由sigpoll激活。它试图从tcp套接字读取数据。它读取的数据被组织成我们想出的数据结构;人工"数据包",如果你愿意的话。没有人知道缓冲区中有多少数据,"数据包"它是由信号处理程序调用的,所以我们不能使用任何动态内存分配器。

1 个答案:

答案 0 :(得分:-1)

嗯。这似乎是你想要的另一个方面。调用所有alloca函数来分配堆栈内存。 alloca() - 当函数终止时,分配的内存消失。它返回一个指针

有关详细信息,请参阅此处。另请注意,使用alloca可能会导致其他一些问题,因此并不完美。

http://man7.org/linux/man-pages/man3/alloca.3.html