《Unix环境系统高级编程》中的C语言内存分布示意图1.C内存分布 BSS段: 用来存放程序中未初始化的全局变量。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。 数据段:用来存放程序中已初始化的全局变量。数据段属于静态内存分配。 代码段:用来存放程序执行...
分类:
编程语言 时间:
2014-08-10 15:36:00
阅读次数:
397
??
未初始化的全局变量和静态变量在bss段中,已经初始化的全局变量和静态变量在数据段中(DS)
自定义申请的内存空间在堆中 void *malloc(size_t size)
free(p) ; p=NULL; 当指针指向malloc函数的返回值时,用完后要做内存释放和令指针指向NULL,当只有free(p)时还能打印出p指向的这片地址内容,但内容不确定
悬空指...
分类:
其他好文 时间:
2014-08-04 17:38:17
阅读次数:
206
一个程序一般分为3段:text段,data段,bss段text段:就是放程序代码的,编译时确定,只读,data段:存放在编译阶段(而非运行时)就能确定的数据,可读可写就是通常所说的静态存储区,赋了初值的全局变量和静态变量存放在这个区域,常量也存放在这个区域bss段:定义而没有赋初值的全局变量和静态变...
分类:
其他好文 时间:
2014-07-31 16:02:56
阅读次数:
210
main函数执行之前,主要就是初始化系统相关资源:1.设置栈指针2.初始化static静态和global全局变量,即data段的内容3.将未初始化部分的全局变量赋初值:数值型short,int,long等为0,bool为FALSE,指针为NULL,等等,即.bss段的内容4.运行全局构造器,估计是C...
分类:
其他好文 时间:
2014-07-29 20:50:22
阅读次数:
211
引言:
对于C语言程序,了解它运行时在内存中是如何分配的对于我们理解它的运行机制是非常有用的。下面就总结一下C语言程序的一些内存分配知识。
一
一段C程序,编译连接后形成的可执行文件一般有代码段、数据段、堆和栈等几部分组成。其中数据段又包括只读数据段、已初始化的读写数据段和未初始化的BSS段。如下图所示:
文本段:存放程序执行...
分类:
编程语言 时间:
2014-07-13 00:01:50
阅读次数:
411
一个程序本质上都是由 BSS 段、data段、text段三个组成的。这样的概念在当前的计算机程序设计中是很重要的一个基本概念,而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配,存储单元占用空间大小的问题。BSS段:在采用段式内存管理的架构中,BSS段(bss segmen.....
分类:
编程语言 时间:
2014-06-15 12:55:30
阅读次数:
378
一个程序本质上都是由 BSS 段、data段、text段三个组成的。这样的概念在当前的计算机程序设计中是很重要的一个基本概念,而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配,存储单元占用空间大小的问题。
BSS段:在采用段式内存管理的架构中,BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Starte...
分类:
编程语言 时间:
2014-06-15 10:55:38
阅读次数:
274
1. C程序的存储空间布局:C 程序由下面几个部分组成: 正文段(即是代码段):
这是由CPU执行的机器指令部分。通常,正文段是可以共享的,并常常是可读的,以防止程序因为意外原因而修改自身的代码! 初始化数据段(即数据段):
它包含了程序中需要明确的赋初值的变量。 非初始化数据段(bss段):在程序...
分类:
其他好文 时间:
2014-05-31 02:48:38
阅读次数:
455
以下摘自变量在内存中的布局可以总结为如下:变量(函数外):如果未初始化,则存放在BSS段;否则存放在data段变量(函数内):如果没有指定static修饰符,则存放在栈中;否则同上常量:存放在文本段.text函数参数:存放在栈或寄存器中内存可以分为以下几段:文本段:包含实际要执行的代码(机器指令)和...
分类:
其他好文 时间:
2014-05-16 09:07:04
阅读次数:
359