打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【精品博文】Linux应用程序地址布局

一、程序构成

在学习Linux应用程序开发时,经常会遇到如下概念:代码段、数据段、BSS段等。BSS(Block Started by Symbol,又名:未初始化数据段)、堆(heap)、栈(stack)而这些部分也是构成Linux应用程序的重要组成部分。

二、内存布局

当Linux应用程序在内存中运行的时候,以上组成部分在内存中以如下图的方式布局。

       


  1. 从低地址到高地址分别为:代码段、数据段、BSS段、堆、栈

  2. 堆向高内存地址生长

  3. 栈向低内存地址生长


三、编写代码查看程序各段地址

编辑如下代码:addr.c

抓取内存信息:


  • 代码段位于 400000 - 401000

  • 数据段位于 600000 - 601000

  • BSS段位于 601000 - 602000

  • 堆空间位于 6ab000 - 6cc000

  • 栈空间地址非常高


四、变量存放段补充


.data段:

  • 全局、已初始化

  • 全局、静态、已初始化

  • 局部、静态、初始化

.BSS段:

  • 全局、未初始化

  • 全局、静态、未初始化

  • 局部、静态、未初始化

.code段:

  • 全局、常量(const)

  • 字符串常量

.stack段:

  • 局部、初始化

  • 局部、未初始化

  • 局部、常量(const)

.heap段:

  • malloc分配局部变量


注意:

可以通过下面命令读取相关程序的内存分配:

通过输出结果可以分析数据段的分配。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Linux虚拟地址空间布局
linux 下 C 程序(进程) 内存布局|『 C 』
Linux进程
程序分text, data (initialized), bss, stack, heap几个段 - C Language Syntax - 木瓜老C
(1)C和C++内存模型
关于C语言程序的内存分配的入门知识学习
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服