Linux应用程序地址布局

网友投稿 556 2022-11-29

Linux应用程序地址布局

Linux应用程序地址布局

1、使用gcc编译addr.c并输出addr可执行文件。gcc addr.c -o addr

2、运行编译后的程序

3、查看程序运行后的各个段的地址,运行命令ps aux后,找出addr进程的进程号,如这里的./addr进程号是11149,再运行命令cat /proc/11149/maps,查看该进程的地址空间。 08048000-08049000:代码段具有读的权限 08049000-0804a000:数据段具有读写权限 08bb7000-08bd8000:堆空间heap bfa0a000-bfa1f000:栈空间stack。

4、了解elf格式,Linux应用程序默认都是elf格式的,利用file 命令查看文件格式,如执行命令“file addr”。

5、利用readelf命令查看程序的各个段信息,执行命令“readelf -S addr”

总结: 全局初始化的变量:位于数据段 全局未初始化的变量;位于数据段BSS段 全局静态变量:位于数据段 全局常量:位于代码段 局部变量:位于栈段,地址向低内存地址生长。 局部静态变量:位于数据段。 通过malloc分配的空间:位于堆段,地址向高内存生长。 注意BSS段是数据段的一个子段。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:卫星导航系统-第16讲-船用惯性导航系统与卫星导航系统的组合-2
下一篇:SpringBoot 如何使用RestTemplate来调用接口
相关文章

 发表评论

暂时没有评论,来抢沙发吧~