内存区域划分

  栈区(stack)

  1)程序运行时由编译器自动分配的一块连续的内容,存放函数的参数值,局部变量的值等

  2)程序结束时由编译器自动释放

  3) 栈由系统自动分配,程序员无法控制

  *

  4)只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。

  5)存取方式,先进后出

  堆区(heap)

  1)在内存开辟另一块不连续的存储区域。一般由程序员分配释放,

  2)若程序员不释放,程序结束时由系统回收

  3)首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。

  静态存储区(static)

  编译器编译时分配内存。全局变量和静态变量的存储是放在一块的。

  将变量定义的类型前加static,则该变量存储在静态存储区

  static:

  1)只初始化一次

  2)只有程序退出才释放

  常量区

  1) 常量占用内存,只读状态,决不可修改

  2) 常量字符串就是放在这里的,程序结束后由系统释放

  代码区

  所有的语句编译后会生成CPU指令存储在代码区.

除非特别注明,鸡啄米文章均为原创
转载请标明本文地址:http://www.teaching4real.com/software/550.html
2016年4月15日
作者:鸡啄米 分类:软件开发 浏览: 注册送白菜网:0