代码驿站移动版
频道导航
HTML/Xhtml
CSS
JavaScript
HTML5
PHP教程
ASP.NET
正则表达式
AJAX
ThinkPHP
Yii
MySQL
MariaDB
Oracle
MongoDB
Redis
DedeCMS
PHPCMS
帝国CMS
WordPress
Discuz
其它CMS
Zend Studio
Sublime
Notepad
Dreamweaver
Windows
Linux
Nginx
Apache
IIS
CentOS
Ubuntu
Debian
网站优化
工具资源
PHP源码
ASP.NET源码
其它源码
图标素材
按钮素材
字体素材
DedeCMS模板
帝国CMS模板
PHPCMS模板
WordPress模板
Discuz!模板
单页模板
开发软件下载
服务器软件下载
广告投放
联系我们
版权申明
软件编程
网页前端
移动开发
数据库
服务器
脚本语言
PHP代码
JAVA代码
Python代码
Android代码
当前位置:
主页
>
服务器
>
Linux
>
基于linux程序中段的学习总结详解
时间:2021-03-31 09:14:10 | 栏目:
Linux
| 点击:次
linux程序的段陆陆续续接触过一些,今天适当的总结一下,时间仓促,总结的比较零散。
linux 段:
text:已编译程序的机器代码。
.rodata:只读数据。printf中的格式串,或者开关语句的跳转表。
data:已初始化的全局变量。
bss:未初始化的全局变量。
symtab:符号表。
注意:
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(可以查看各个段的大小。)
您可能感兴趣的文章:
详解如何在 CentOS 7 中安装或升级最新的内核
wamp2.2e 64位 curl 开启不了的解决办法
Linux低电量自动关机的实现方法
Linux 逻辑卷管理(LVM)使用方法总结
linux查看用过的命令方法总结
相关文章
12-09
Linux下实现UTF-8和GB2312互相转换的方法
10-25
linux系统用户管理与grep正则表达式示例教程
11-16
Centos系统中彻底删除Mysql数据库步骤
12-04
阿里云ECS实例设置用户root密码和远程连接的方法
11-01
Linux使用Cron+AT实现在某个确定的时间段内随机执行命令
JQuery
VUE
AngularJS
MSSql
MySQL
MongoDB
Redis
Linux
Tomcat
Nginx
网站首页
广告投放
联系我们
版权申明
联系站长