程序中的栈(后进先出)
栈在程序中用于维护函数调用上下文,没有栈就没有
函数,没有局部变量
栈保存了一个函数调用所需的维护信息:
函数参数,
函数返
回地址
局部变量(不要返回一个局部变量的指针,局部变量在栈里,用完就被释放了)
函数调用上下文
程序中的堆
为什么有了栈还需要堆?
栈上的数据在函数返回后就会被释放掉,无法传递到函数外
部,如:局部数组
堆是程序中一块巨大的内存空间,可由程序自由使用(堆空间通过申请才能
获得
)
堆中被程序申请使用的内存在程序主动释放前将一直有效
系统对堆空间的管理方式----
空闲链表法 ,位图法 ,对象池法等等
程序中的静态存储区(主要用来保存全局变量和静态变量)
程序静态存储区
随着程序的运行而分配空间,直到程
序运行结束
在程序的
编译期静态存储区的大小就已经确定
程序的静态存储区主要用于保存程序中的
全局变量和
静态变量
与栈和堆不同, 静态存储区的信息最终会保存到可执
行程序中