内存管理与内存池实现原理.pdfVIP

  • 0
  • 0
  • 约小于1千字
  • 约 2页
  • 2026-10-04 发布于北京
  • 举报

第六课:内存管理

这一课主要就两个部分,分别是

第一部分:malloc,free,new,delete的作用原理

第二部分:内存碎片化和内存池的实现

第一部分:malloc,free,new,delete的实现原理

首先讲一下栈内存和堆内存的概念:

1.栈内存比较小,32位程序一般不超过4M,在程序加载时就已经分配,可以用

各种方式寻址

2.堆内存是比较大的,可以说2g(32位windows程序用户区)或3g(32位linux

程序用户区)的用户区大部分都是堆内存,所以在程序加载时堆内存是没有经过

mmu分配内存的,堆内存一旦越界直接报错。此外,堆内存唯一的寻址方

式就是指针。

为什么堆内存又被称为动态分配内存?这就是。我们用new或malloc分配

内存,本质就是通过mmu在内存上申请内存。一个函数执行完毕,释放栈

内存,堆内存不会去管的,所以必须要我们手动释放内存,当然一个进程执行完

毕,操作系统会去释放全部的堆内存。

但是我们要养成一个好习惯,就是要主动控制堆内存的分配与释放,不要等待操

作系统帮我们回收。

所以程序的主要数据其实在堆内存。栈更加灵活,高效,但是空间小。堆内存空

间大,需要时通过mmu分配在内存上,这样的设计方式极大的提高了

内存的使

文档评论(0)

1亿VIP精品文档

相关文档