Linux应用程序地址布局
来源:互联网 发布:windows关闭端口命令 编辑:程序博客网 时间:2024/06/05 20:18
在学习Linux应用程序开发时,经常会遇到如下概念:代码段、数据段、BSS段(Block Started by Symbol,又名:未初始化数据段) 、堆(heap)和栈(stack)。而这些部分也是构成Linux应用程序的重要组成部分。
当Linux应用程序在内存中运行的时候,以上组成部分在内存中按如下方式布局:
1.从低地址到高地址分别为:代码段、数据段、BSS段、堆、栈
2.堆向高内存地址生长
3.栈向低内存地址生长
如下图所示:
图中0x8048000是虚拟地址。
各个段包含的数据内容:
1.代码段:代码,全局常量(const)、字符串常量
2.数据段:全局变量(初始化以及未初始化的)、静态变量(全局的和局部的、初始化的以及未初始化的)
3.堆:动态分配的区域
4.栈:局部变量(初始化以及未初始化的,但不包含静态变量)、局部只读变量(const,常量)
注意:malloc指针在堆中,malloc分配的空间在堆中。
查看各个段地址的方法:
先用命令ps aux查看程序进程ID。
然后用“cat /proc/ [ID号] /maps”来查看各个段的地址。例如: cat /proc/6505/maps
使用“readelf -S 可执行文件名”来查看BSS段地址。
0 0
- Linux应用程序地址布局
- Linux应用程序地址布局
- linux应用程序地址布局
- Linux应用程序地址布局
- Linux应用程序地址布局
- Linux应用程序地址布局
- Linux应用程序地址布局
- [3]Linux应用程序地址布局
- [3]Linux应用程序地址布局
- 2、Linux应用程序地址布局
- linux应用程序(3)---应用程序地址布局
- Linux学习之Linux应用程序地址布局
- Linux应用程序在内存地址布局
- 一步一步学好Linux开发之Linux应用程序地址布局
- linux应用程序内存布局
- linux应用程序地址分布
- Linux应用程序地址分布
- linux应用编程笔记(3)addr.c分析linux应用程序地址布局
- 7.终结方法(finalize方法)和终止方法(显示的finally)
- 谈近年离我们远去的技术
- 每日一个linux命令
- MainActivity.this 和直接用 this的区别
- 通过enforcer插件定位jar包或类冲突问题
- Linux应用程序地址布局
- 【备忘】史上最全Hadoop视频教程(从入门到精通 视频教程下载)
- 秒杀多线程第六篇 经典线程同步 事件Event
- 二级三级联动实现
- 自适应高度div内嵌iframe高度被撑开问题解决
- 社会化分享大致步骤,写给和我一样第一次用的人
- EDIUS如何删除创建的工程预设
- dojo的dojo.mixin
- iOS开发之Xcode8控制台输出警告:subsystem: com.apple.UIKit, category: HIDEventFiltered, enable_level: 0