gpt4 book ai didi

我们可以用 GCC 的内联函数来做到这一点吗?

转载 作者:行者123 更新时间:2023-11-30 18:12:52 25 4
gpt4 key购买 nike

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

谢谢!

编辑:

我拥有的是一个在信号处理程序上下文中调用的函数,由 sigpoll 激活。它尝试从 TCP 套接字读取数据。它读取的数据被组织成我们提出的数据结构;人造“数据包”,如果你愿意的话。不知道缓冲区中有多少数据,“数据包”边界在哪里等等。它是由信号处理程序调用的,因此我们不能使用任何动态内存分配器。

最佳答案

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

请参阅此处以获取更多信息。另请注意,使用 alloca 可能会导致一些其他问题,因此它并不完美。

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

关于我们可以用 GCC 的内联函数来做到这一点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29640249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com