问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

2.3 C语言中变量的存储器地址映射

发布网友 发布时间:2024-09-06 09:00

我来回答

1个回答

热心网友 时间:2024-09-08 23:31

下面的C源程序执行后,输出什么样的结果呢?程序运行时,观察ci和csi的变化,有何特别之处?


ci是func()内部的局部变量,而带有static修饰的csi和csi2则是静态局部变量。全局变量i1和i2,以及带有static的is1和is2,它们的存储性质不同。


要理解局部变量、静态局部变量、全局变量和静态全局变量,需要深入到存储分配和机器指令层面。执行“objdump -S -D ab>ab.txt”命令,反汇编程序,分析相关部分,可以看到变量如何在目标文件中布局。


目标文件,Linux下的可执行文件格式,由ELF构成,包含多个节,如.text(代码)、.data(已初始化变量)、.bss(未初始化变量)和.rodata(只读数据)。在反汇编的ab.txt中,这些部分有所体现。


.text节存储用户代码,如main()和func()。全局变量i1和is1在.data节中分配,初始值分别为0x0000 0005和0x0000 0001。静态局部变量csi和csi2同样在.data节,csi的初始值为0x12345678。


.bss节用于未初始化的变量,如i2、is2和csi2,它们的初始值为0。.rodata节存放字符串" ci=%d,csi=%d\n",用于后续的输出。


目标文件的存储映射是虚拟地址,代码和数据映射到不同的内存区域。函数的栈帧在运行时动态分配,局部变量ci和csi的地址由栈帧决定,ci在每次func()调用时都会重新分配。


静态局部变量csi的分配与初始化不同,它在编译时就确定了地址和值。函数结束时,csi的值不会被清除,因此多次调用func()时,csi的值会累加i1的值。


总结起来,区别如下:



局部变量在栈中,每次函数调用时重新分配,ci的结果会累加i1。静态局部变量csi在.data节,值不随函数调用改变。
局部变量在函数结束时释放,而静态局部变量在整个程序运行期间保持。
全局变量在.data节分配,初始化时赋值,i1和is1的值在整个程序中可见。
静态全局变量与全局变量类似,但仅在本文件范围内可见,如tongming.c和f234.c中的s。

通过反汇编,可以看到全局变量和静态全局变量在不同文件中的同名处理,以及局部变量如何避免与全局变量冲突。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
黑色芳纶哪家的好一些? 苏子叶我们中国叫什么苏子叶在中国叫什么 福州小车过户多少钱啊 福州车辆过户要多少钱 民生山西怎么查不到医疗保险信息 app查询养老金医疗保险方法介绍_百度... 太原医保查询平台(附入口二维码) 鉴定伤残等级去哪个部门 2024年中国铝业集团高管团队名单 2024中铝集团董事会成员一览 右枕位胎儿图怎么睡 一鸣楼宇对讲,刷卡开不了门,但分机能开,对讲能用,怎样维修? 离职补偿金合理么? 辞退员工补偿扣除限额多少免征个税? 谁是大歌神不为谁而作的歌(Live)歌词 有温柔气质的女孩名字介绍 想要获得出世间智慧,必须圆满哪一道功德?如何才能圆满?什么叫世间正 ... “出世那知在世间”的出处是哪里 浊者自浊清者清,菩提烦恼等空平.但能无分见本性,不枉此生世间行... 金立手机s9怎么强制恢复出厂设置金立s9刷机方法步骤 什么牌子的运动手表表盘设计比较好? 什么品牌的运动手表好用不贵? 速冻食物哪种解冻方法最快且安全? 怎样快速解冻海鲜? 海鲜冷冻后多久才能吃啊 如何让速冻海鲜更好吃? 怎么处理冷冻海鲜使其解冻后依然保持新鲜口感? 有哪些材质的项链不容易掉色? 带黄铜的项链别人能看出来吗 化湿健脾的食物有哪些 迢迢牵牛星的意思翻译 迢迢牵牛星的译文 《迢迢牵牛星》译文及赏析 自动离职可以拿回工资吗 自动离职和旷离,工资怎么发放 铁杵成针是谁 铁杵成针是谁的故事 适合儿童的讲成语故事它们各自说明了什么 木工刨子使用方法是什么 刨子如何安装 征地程序具体都有哪些?征地补偿又是怎样分发给农民的? 征地补偿的操作程序有哪些? 征地补偿的实施有哪些程序 qq音乐乐币有什么用? 紫光展锐好用吗? 怎么让衣服带香味 让衣服有香味的方法 怎样让衣服带有自然的香味 华为手机怎么转换成扬声器播放声音呢? 三星手机怎么打开快充模式啊 为什么三星s8不能快速充电了 郑州黄河游览区五一期间的观景位置有哪些推荐? 郑州黄河游览区的拍照攻略有哪些? 郑州黄河风景区旅游指南 郑州黄河风景名胜区需要玩多久