C语言中级培训教程—内存使用.pdfVIP

  • 11
  • 0
  • 约1.37万字
  • 约 36页
  • 2015-10-01 发布于河南
  • 举报
C语言中级培训教程—内存使用.pdf

CC语言中级培训语言中级培训 六、内存使用 程序设计的本质 所谓程序就是由语句来操纵使用数据。 数据是存放在计算机的内存中的。语句使用 它它,,在机器角度看在机器角度看,,是通过地址来访问是通过地址来访问;;在高级在高级 语言的角度看,是对变量名的使用,或者索性使 用地址。 这样看来这样看来,,所谓所谓程序设计程序设计就是对内存直接或就是对内存直接或 间接地使用间接地使用。。 可见,了解内存的分配和活动乃是编程者的 第一要务。 2 变量的属性 对变量起作用的属性有两个: 存储的分类和数据类型。 存储类决定着该变量的诞生地——存储区域。 存储区域决定着变量的存储区域决定着变量的作用范围作用范围和和生命期生命期,,这两这两 方面的性质统称为变量的方面的性质统称为变量的属性属性。。 同一存储区域内的所有变量具有相同的属性同一存储区域内的所有变量具有相同的属性;; 各存储区域的变量各有不同的属性。 3 内存的划分 分为4个区域: memory 栈区栈区autoauto 存放程序的局部数据和参数存放程序的局部数据和参数 数据区数据区 静态区静态区staticstatic 存放程序的全局数据和静态数据 堆区heap 存放程序动态申请的数据 代码区code 代码区 存放程序的代码 4 各区域的特点 11 栈区栈区 stackstack 由系统按栈原则管理, 编译时就已经“规划”好了,运行时才使用, 短命短命,, 程序运行时已经存在程序运行时已经存在,, 用户无法干预变量的诞生和消亡, 有名称,亦可无名。 规划规划了了,,是指编译器为变量预订了房间是指编译器为变量预订了房间,,尚未尚未 实施。到被调用时方才实施。 5 各区域的特点 2 静态区 static 编译时编译时已确定并初始化了已确定并初始化了,, 用户无法干预, 有名称,亦可无名, 不按栈原则管理不按栈原则管理,,但仍受但仍受 ““域域””的制约的制约,, 较长命, 该区存有全局变量(外部变量)、局部静态 变量和常量变量和常量。。((为何将常量放在静态区为何将常量放在静态区??常量常量 是用来初始化变量的,函数中的局部变量初 始化所需的常量始化所需的常量,,不必重复保管不必重复保管,,放在静态放在静态 区中供大家共用,是合理的选择。) 6 各区域的特点 33 代码区代码区 codecode 存有程序的所有函数代码, 用户无法干预,只能通过函数名调用, 每段代码都有名称每段代码都有名称—— 函数名函数名,, 程序结束即释放程序结束即释放。。 通常紧挨着静态区。 7 各区域的特点 44 堆区堆区 heapheap 长命, 无名称, 不受作用域限制不受作用域限制,, 用户可以干预变量的诞生和消亡用户可以干预变量的诞生和消亡,, 在程序运行时才动态分配, 该区的使用将付出更大的代价, 申请可能失败申请可能失败。。

文档评论(0)

1亿VIP精品文档

相关文档