gpt4 book ai didi

c - 函数的存储分配

转载 作者:行者123 更新时间:2023-11-30 20:01:53 25 4
gpt4 key购买 nike

当我定义这样的函数时:

void foo(int a, int b) {}
  1. 何时分配存储空间?
  2. 此存储分配在哪里

最佳答案

如果您的问题类似于“编译器完成工作后该函数是什么以及在哪里”:

编译器将此定义转换为汇编代码,然后将其转换为二进制可执行文件。它不在您的内存中(因此没有“存储分配”),而是在编译器输出的可执行文件中(a.out 如果您在 Linux 上调用 gcc,除了输入文件之外没有任何其他参数,或者在 Windows 上调用 .exe 文件)。

编辑:再进一步,因为您的函数声明了两个参数:

编译器生成一个二进制可执行文件,这就是您的函数所在的位置。现在,可执行文件(执行时)将为这些参数分配内存(堆栈上的几个字节用于两个 int)。

换句话说:在最终的可执行文件中,函数定义只是 CPU 可以执行的一堆指令。然而,这些指令分配内存以存储两个参数。

关于c - 函数的存储分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26299618/

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