参考:《UNIX环境高级编程》第7章 7.6节
C程序一般有下面几部分构成
正文段:又叫文本段,这是有CPU执行的机器指令部分。通常,正文段是可以共享的,并 且是只读的。
初始化数据段:通常将此段作为数据段,它包含了程序中需要明确的赋初值的变量,比如函 数外的声明:int cnt = 10;
非初始化数据段:通常此数据段称为bss段(block start symbol),在程...
分类:
其他好文 时间:
2014-12-04 20:05:19
阅读次数:
201
为了方便起见,建立了以下简单模型,和构造了部分测试数据:在某个业务受理子系统BSS中,SQL 代码--客户资料表createtablecustomers(customer_id number(8)notnull,-- 客户标示city_name varchar2(10)notnull,-- 所在城市...
分类:
其他好文 时间:
2014-12-04 11:57:09
阅读次数:
144
volatile所有定义的变量都是在内存上面的,例如:int i = 10;int j = i;int k = i;i = 10; 是初始化的变量,存放在数据段,未初始化的变量存放在bss段也就是i为左值时存放在内存上j = i 此时 i 为右值,那么i的值在寄存器上,j就从寄存器上面取值由于编译器...
分类:
其他好文 时间:
2014-12-03 18:25:38
阅读次数:
194
函数代码://demo.c#include#includeint global1 = 0, global2 = 0, global3 = 0;void function(void){ int local4 = 0, local5 = 0, local6 = 0; stat...
分类:
其他好文 时间:
2014-12-01 15:54:03
阅读次数:
268
图示C内存分配程序代码区存放函数体的二进制代码全局数据区全局变量和静态变量的存储是放在一起的。初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。常量数据存放在另一个区域里。这些数据在程序结束后由系统释放。我们所说的BSS段(bss segment)通常是...
分类:
其他好文 时间:
2014-11-03 16:04:48
阅读次数:
276
我们在学习C程序开发时经常会遇到一些概念:代码段、数据段、BSS段(Block Started by Symbol)、堆(heap)和栈(stack)。先看一张教材上的示意图(来源,《UNIX环境高级编程》一书),显示了进程地址空间中典型的存储区域分配情况。从图中可以看出:从低地址到高地址分别为:代...
分类:
系统相关 时间:
2014-11-01 11:38:26
阅读次数:
327
转自:http://book.51cto.com/art/200811/96138.htmC语言编译后的可执行程序的存储结构和运行结构可执行程序在存储时(没有调入到内存)分为代码区(text)、数据区(data)和未初始化数据区(bss)3个部分。(1)代码区(text segment)。存放CPU...
分类:
编程语言 时间:
2014-10-26 00:12:52
阅读次数:
308
一:内存分为5大区域 栈区 -- 存放局部变量 堆区 -- 程序运行过程中,动态分配的内存 BSS区 -- 未初始化的全局变量和静态变量 数据段 -- 已经初始化的全局变量和静态变量 代码段 -- 程序编译产生的二进制的数据内存分配方式: ·1)静态分配,在编译的阶段分配的...
分类:
编程语言 时间:
2014-10-25 22:43:35
阅读次数:
373
对于一个C语言程序而言,内存空间主要由五个部分组成代码段(.text)、数据段(.data)、BSS段(.bss),堆和栈组成,其中代码段,数据段和BSS段是编译的时候由编译器分配的,而堆和栈是程序运行的时候由系统分配的。布局如下在上图中,由编译器分配的地址空间都是在连接的时候分配的,而运行时分配的...
分类:
编程语言 时间:
2014-10-22 14:21:55
阅读次数:
259
虚拟内存自上而下分为 堆栈段,数据段,代码段 , 堆栈段分为堆区和栈区 ,栈区从上往下分配内存,堆区从下往上分配内存 。数据段分为静态区和全局区。两者的作用域不同。代码段分为只读区和代码区 。最后还有bss区现在还不涉及。 六个区域的定义如下: 1 #include 2 #include ...
分类:
其他好文 时间:
2014-10-16 23:00:33
阅读次数:
324