专栏名称: Linux内核之旅
Linux内核之旅
今天看啥  ›  专栏  ›  Linux内核之旅

聊聊C语言中的malloc申请内存的内部原理

Linux内核之旅  · 公众号  · linux  · 2024-02-21 16:34

文章预览

大家好,我是飞哥! 我们今天来深入地了解一下malloc函数的内部工作原理。 操 作系 统为 应 为应用层提供了 mmap、brk 等系统调用来申请内存。但是这些系统调用在很多的时候,我们并不会直接使用。原因有以下两个 系统调用管理的内存粒度太大。系统调用申请内存都是整页 4KB 起,但是我们平时编程的时候经常需要申请几十字节的小对象。如果使用 mmap 未免碎片率也太大了。 频繁的系统调用的开销比较大。和函数调用比起来,系统的调用的开销非常的大。如果每次申请内存都发起系统调用,那么我们的应用程序将慢如牛。 所以,现代编程语言的做法都是自己在应用层实现了一个内存分配器。其思想都和内核自己用的 SLAB 内存分配器类似。都是内存分配器预先向操作系统申请一些内存,然后自己构造一个内存池。当我们申请内存的时候,直接由 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览