操作系统
引言
操作系统是大二下学期学的,我学的不好。原因不深究,把知识搞明白了就好。
C语言程序的内存布局
一个正在运行的 C 程序占用的内存区域,从低地址向高地址扩展,可依次分为代码段、数据段(初始化数据)、BSS 段(未初始化数据)、堆和栈 5 部分。
栈内存
- 使用一级缓存,速度快
- 存放函数的局部变量、参数、返回值,函数返回后立即回收
- 空间不大,使用不当会造成栈溢出,如函数调用层次太深、动态申请空间使用后未释放、数组越界访问、指针非法访问
- 从高地址向低地址增长
堆内存
- 使用二级缓存,速度相对较慢
- 空间需要手动分配/释放,如
malloc
,new
,delete
等,生命周期由虚拟机的垃圾回收算法决定 - 空间相对较大,容易造成内存泄漏和内存碎片
- 从低地址向高地址增长
This post is licensed under CC BY 4.0 by the author.