国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務器 > Linux服務器 > 正文

基于linux程序中段的學習總結詳解

2024-09-05 23:02:01
字體:
來源:轉載
供稿:網友
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(可以查看各個段的大小。)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 延寿县| 板桥市| 北宁市| 巴彦县| 邹城市| 武城县| 淮安市| 济阳县| 漯河市| 榆中县| 黎城县| 兴海县| 晋江市| 罗江县| 临泽县| 徐闻县| 上林县| 宜都市| 龙井市| 青河县| 重庆市| 古丈县| 根河市| 清水县| 平湖市| 揭西县| 平定县| 贵阳市| 新河县| 富锦市| 瑞安市| 永兴县| 洱源县| 浏阳市| 深州市| 榆中县| 伊通| 庆安县| 庆安县| 营口市| 全椒县|