gpt4 book ai didi

c - printf 是否消耗 C 中的堆栈帧?

转载 作者:太空宇宙 更新时间:2023-11-04 05:08:44 25 4
gpt4 key购买 nike

假设我们创建了一个用户函数void func()func 的堆栈帧由函数调用分配,每当它在其他函数(例如 ma​​in)中被调用时。

它和 printf 一样吗?printf 是否也消耗栈帧?

最佳答案

前提:堆栈帧只是许多 C 实现的一个实现细节(具体来说,通常在 x86 上使用);它既不是 C 标准所要求的(C 标准对堆栈一无所知),也不是所有实现都需要的东西(甚至不是,它甚至可能取决于编译器标志/优化器的考虑)。

当然,库函数最终只是已经编译到标准库中的常规函数​​,因此在这方面没有什么特别之处:在使用堆栈帧的实现中,无论何时执行函数调用,被调用的函数集向上它的堆栈框架(除非它是内联的或者它是完全微不足道的,但这通常不会发生在像 printf 这样的库函数中)。

不过,这没什么好担心的——当函数返回时,新的栈帧被丢弃并且它的栈空间再次可用,所以你不必注意不要调用太多函数。

关于c - printf 是否消耗 C 中的堆栈帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44626600/

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