Post

操作系统

引言

操作系统是大二下学期学的,我学的不好。原因不深究,把知识搞明白了就好。

C语言程序的内存布局

一个正在运行的 C 程序占用的内存区域,从低地址向高地址扩展,可依次分为代码段、数据段(初始化数据)、BSS 段(未初始化数据)、堆和栈 5 部分。

栈内存

  • 使用一级缓存,速度快
  • 存放函数的局部变量、参数、返回值,函数返回后立即回收
  • 空间不大,使用不当会造成栈溢出,如函数调用层次太深、动态申请空间使用后未释放、数组越界访问、指针非法访问
  • 从高地址向低地址增长

堆内存

  • 使用二级缓存,速度相对较慢
  • 空间需要手动分配/释放,如 malloc, new, delete 等,生命周期由虚拟机的垃圾回收算法决定
  • 空间相对较大,容易造成内存泄漏和内存碎片
  • 从低地址向高地址增长
This post is licensed under CC BY 4.0 by the author.