源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

基于linux程序中段的学习总结详解

  • 时间:2022-05-10 07:31 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:基于linux程序中段的学习总结详解
linux程序的段陆陆续续接触过一些,今天适当的总结一下,时间仓促,总结的比较零散。 [b]linux 段: [/b]text:已编译程序的机器代码。 .rodata:只读数据。printf中的格式串,或者开关语句的跳转表。 data:已初始化的全局变量。 bss:未初始化的全局变量。 symtab:符号表。 [b]注意: [/b]1、如果定义一个全局变量,int i = 0;它被初始化为0,但是,它却不是放在data段中的,而是放在bss段中的。因为编译器可能会做一些优化,如果初始化为0,则它会将它等同于未初始化的变量。这样的可能要求他会将所有未初始化的全局变量(bss段)初始化为0。——但是这个可能会和编译器有关系。 2、对于static全局变量,它在符号表中有一个属性表示他是local的,不是global。local的符号式不允许被其他的文件引用的。 3、static定义的局部变量,编译器会把它作为static全局变量来处理。它在符号表中是出现的(局部变量是不出现的)。唯一不同的是,它会把它在符号表中的名字改掉,一般会增加一个后缀:“.1788”。用这种方法来防止和其他的全局变量重名。而且也可以防止对它的调用。 4、段是有对齐的。如果定义一个char字符,会发现它有时会增加四个字节,之后定义,段大小便不再增加。 5、查看程序段的工具包括:readelf,objdump(加上-t可以查看变量属于哪个段),size(可以查看各个段的大小。)
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部