linux 程序存储结构
来源:互联网 发布:电视这么连接有线网络 编辑:程序博客网 时间:2024/04/30 01:17
1、存储时
看实例,下面是对可执行文件aa运行size命令后得到的结果。
[root@xxx1 algriom]# size aatext data bss dec hex filename
1257 500 16 1773 6ed aa
其中:
text(代码区):表示正文段大小,是CPU执行的机器指令部分,通常,是可共享的,所以即使是频繁执行的程序在存储器中也只需有一个副本;
data(初始化数据区):表示包含静态变量和已经初始化(可执行文件包含了初始化的值)的全局变量的数据段大小;
bss :表示未初始化的全局变量和未初始化的静态变量,称之为未初始化数据段;
PS:第4列和第5列是分别以十进制和十六进制表示的三个段的总长度。
2、运行时(进程结构)
运行时是指一个正在运行的进程在内存空间中的结构,也就是一个进程的结构。
一般包括代码区、初始化数据区、未初始化数据区、堆区和栈区5个部分。
前三者与存储时相同,(1)栈区存储函数参数值、返回值、局部变量等。向下生长
(2)堆区用于动态内存分配。向上生长
堆区和栈区的区别如下:
(1)栈由操作系统自动管理,无需程序员手工控制,而堆区的申请和释放工作由程序员控制。
(2)栈是一块连续的内存区域,由系统预先设定,一般较小,从高地址向低地址增长;而堆是向高地址扩展的数据结构,是不连续的内存区域,空间较大。另外,分配的效率上,栈的分配比堆的分配要高效很多。
结论:
1、 经过初始化的全局变量和静态变量保存在数据段中。
2、 未经初始化的全局变量和静态变量保存在BSS段。
3、 函数内部声明的局部变量保存在堆栈段中。
4、 const修饰的全局变量保存在文本段中,const修饰的局部变量保存在堆栈段中。
5、 字符串常量保存在文本段中。
- linux程序存储结构
- linux 程序存储结构
- Linux程序存储结构与进程结构
- linux 程序存储结构与进程结构
- [转载]Linux程序存储结构与进程结构
- linux下c程序的存储结构和进程结构
- 程序存储结构
- linux中程序存储结构和进程的地址空间
- Linux 文件存储结构
- 【Linux】文件存储结构
- Linux文件存储结构
- Linux程序存储结构与进程结构 堆和栈的区别
- Linux程序存储结构与进程结构堆和栈的区别
- Linux程序存储结构与进程结构堆和栈的区别
- Linux程序存储结构与进程结构堆和栈的区别
- Linux程序存储结构与进程结构 堆和栈的区别
- Linux文件的存储结构
- Linux文件存储结构--inode
- AsyncTask异步任务
- 如何阅读一本书(2)
- C++类型转换之dynamic_cast
- iOS 简单基础知识点(2)-xib
- 关于polymer原生组件paper-input的部分属性的使用心得
- linux 程序存储结构
- VMware下Linux如何ping通Windows
- nyoj 860又见01背包
- Python 入门学习
- POJ 1236 Tarjan算法
- ubuntu下安装nginx及基本指令
- c++作业3
- cf - #346 D-Bicycle Race
- C++之引用和指针