C 语言程序的存储区域
2013-01-15 14:11
537 查看
1.C 语言程序的运行有如下几个阶段
<1>编译
<2>汇编
<3>链接
<4>运行
2.程序文件在调入内存后,经历编译-汇编-链接后会形成一个文件,这个文件有如下几个部分:
<1>代码段: 保存机器码的存储区域
<2>只读数据段: 保存不会被更改的数据的存储区域,如const char str[]="abc";
只读外部变量,const char str[]="def";
只读自动变量, const char str[]="abc";
程序中使用的常量,printf("ddddd\n");
<3>已初始化读写数据段: 保存已经有了初值的变量存储区域,如 外部变量 int a=10;静态变量 static int b=10;'
外部变量
静态变量(内部链接)
静态变量(代码快作用域、空连接、静态存储期)
<4>未初始化数据段: 没有初值的变量,在程序运行前,这部分变量不占用存储空间,如外部变量 int a;
外部变量
静态变量(内部链接)
静态变量(代码快作用域、空连接、静态存储期)
<5> 堆 :主程序运行时分配,如 malloc,relloc,
<6> 栈 : 程序运行时分配,主要用于自动变量以及函数参数等。
3.程序编译链接后,形成 代码段,只读数据段、已初始化读写数据段。程序运行前的初始化阶段,形成未初始化数据段。程序运行时形成堆和栈。
4.代码段、只读数据段、已初始化读写数据段、未初始化数据段属于静态存储区域,其他的属于动态存储区域。所以说外部变量、常量、所有的静态变量都保存在静态存储区。
动态区的内存,特别是堆中的内存在分配使用完毕后,需要释放。
<1>编译
<2>汇编
<3>链接
<4>运行
2.程序文件在调入内存后,经历编译-汇编-链接后会形成一个文件,这个文件有如下几个部分:
<1>代码段: 保存机器码的存储区域
<2>只读数据段: 保存不会被更改的数据的存储区域,如const char str[]="abc";
只读外部变量,const char str[]="def";
只读自动变量, const char str[]="abc";
程序中使用的常量,printf("ddddd\n");
<3>已初始化读写数据段: 保存已经有了初值的变量存储区域,如 外部变量 int a=10;静态变量 static int b=10;'
外部变量
静态变量(内部链接)
静态变量(代码快作用域、空连接、静态存储期)
<4>未初始化数据段: 没有初值的变量,在程序运行前,这部分变量不占用存储空间,如外部变量 int a;
外部变量
静态变量(内部链接)
静态变量(代码快作用域、空连接、静态存储期)
<5> 堆 :主程序运行时分配,如 malloc,relloc,
<6> 栈 : 程序运行时分配,主要用于自动变量以及函数参数等。
3.程序编译链接后,形成 代码段,只读数据段、已初始化读写数据段。程序运行前的初始化阶段,形成未初始化数据段。程序运行时形成堆和栈。
4.代码段、只读数据段、已初始化读写数据段、未初始化数据段属于静态存储区域,其他的属于动态存储区域。所以说外部变量、常量、所有的静态变量都保存在静态存储区。
动态区的内存,特别是堆中的内存在分配使用完毕后,需要释放。
相关文章推荐
- C语言运行程序的存储区域
- C语言程序的存储区域
- C/C++语言程序的存储区域
- Linux下C/C++程序内存布局 各种类型数据存储区域及生长方向
- 程序中变量分布的区域总结 堆 栈 字符常量区 全局数据区 静态存储区
- 用C语言写的ISAPI上传文件(图片)、显示图片、图片存储以及可供其它语言调用的方式、和程序源代码
- C 语言对于存储区域及指针的概念总结
- Creating Office Solutions for Use in Multiple Countries/Regions(创建区域语言无关的操作excel的程序)
- C/C++程序内存的各种变量存储区域和各个区域详解
- 程序内存情况及变量存储区域(转载)
- 汇编语言三 设数组ARRAY存储多个8位无符号数据,其中第一个字用于存放数据个数,试编写程序求数组元素之和,将结果存放在AX中,若计算的和超过16位数表示的范围,则给出溢出标志DX=-1,否则D
- C 语言编译过程 C语言中各种数据存储的不同内存区域 关于sizeof 结构体比实际的大的问题
- EFM32在使用IAR开发环境配置ICf文件以及指定程序存储地址空间
- 【转】程序语言与它们的工具
- [置顶] 如何掌握所有的程序语言
- python语言 第一个程序
- 一起talk C栗子吧(第一百三十一回:C语言实例--C程序内存布局三)
- 把c语言中的声明用程序翻译成通俗的语言
- 蜘蛛/爬虫程序的多线程控制(C#语言)
- wpf本地程序换肤(换语言)笔记