gpt4 book ai didi

c - 函数存储在内存中的什么位置?

转载 作者:行者123 更新时间:2023-12-03 08:09:03 25 4
gpt4 key购买 nike

c中函数存储在内存中的什么位置?谁能用简单的语言解释一下?

#include stdio.h>

void g()
{
int a=7;
}

int main()
{
printf("%d\n",sizeof(g()));
printf("%p",&g);

return 0;
}

下面程序的输出是

1
00007ff6ee001581

以及函数内变量的存储位置并与函数地址链接

最佳答案

函数内部的变量存储在栈中。

每个链接和寻址部分都是由链接器完成的。

简单地说,链接器决定为什么标签或函数提供什么绝对地址,而编译器决定它们如何排列以及能够相互寻址。

编译需要四个步骤:

  Preprocessing [in which header file and microprocessor worked upon].

Compiling[In which they are converted into assembly code]

Assembly[In which codes are converted into machine level language but have relative addressing in respect to there starting]

Linking[When absolute address is given so when loaded they can address each other and files and linked in one]

#我认为最后几行可以帮助你

函数和变量都是标签,每个标签都被翻译成地址。在机器上运行的代码具有代表这些标签的地址。不仅是 C,所有编译语言都会经历它。正如在机器上的机器代码或只是接线。

如果您不明白任何内容,请说出来。很高兴为您提供帮助

关于c - 函数存储在内存中的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71382902/

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