gpt4 book ai didi

c - c中静态函数的范围

转载 作者:太空宇宙 更新时间:2023-11-04 07:10:41 26 4
gpt4 key购买 nike

有一次我听说声明为静态的函数不是放在堆栈中,而是放在堆中。现在,当我研究这个时,我发现这很有趣,但它看起来不是真的。那么这是真的吗?或者有什么方法可以做到这一点(在其生命周期内将函数放在堆上)?

最佳答案

函数 不放在堆栈或堆上。函数(即实现它的代码)通常放置在某个内存区域中,通常被操作系统标记为只读,在程序启动时从可执行文件加载。

函数定义中的 static 关键字会影响其名称的可见性。 static 函数的名称仅在定义它的翻译单元中可见。如果您使用指针而不是通过名称调用函数,它仍然可以从其他翻译单元(源文件)调用。

如果函数内定义的变量未定义为 static,则通常在“堆栈”上分配存储空间;如果定义为 static<,则通常分配在某个全局内存区域中。 “堆”仅用于由 malloc 和类似函数分配的内存。

请注意,C 标准不使用术语“堆栈”或“堆”,并且不同的 C 编译器可能会以不同的方式使用它们(如果有的话)。函数中的局部变量以类似堆栈的方式分配,但标准没有说明“堆栈”是如何实现的(例如,它在内存中不一定是连续的)。

关于c - c中静态函数的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28686049/

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