gpt4 book ai didi

c - 外部变量内存位置和编译/运行时行为

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

我已经阅读了很多关于外部变量的内容,但似乎没有人适本地解决它。如果我在 C 中声明和定义一个变量,它会在文件的该范围内分配内存。但在稍后阶段,在多文件模块化项目中,该变量被声明为一个外部变量,它应该将它存储在数据段中,以展示外部功能预期的全局行为。

所以我试图找出内存分配的方式和时间,即外部变量的编译时和运行时行为。

最佳答案

其中一个编译单元必须将变量定义为全局变量。编译此文件时,为数据段中的变量分配内存,类似于文件作用域变量。不同的是,变量被注册在链接表中,以便其他目标文件可以找到它。

所有其他编译单元使用 extern 关键字声明它。这可以防止它们为变量分配内存,并安排链接器查找外部变量。

当您将所有目标文件链接在一起时,链接器会找到所有具有对该变量的外部引用的目标文件,并将该链接连接到在第一个目标文件中分配的内存。

关于c - 外部变量内存位置和编译/运行时行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56550261/

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