内存管理—— malloc 细节

2021-09-08  本文已影响0人  太刀
古装美女

1. 应用程序内存布局

在 Linux 系统中,应用程序的内存被分为若干个逻辑段,如图:


应用程序内存布局

其中,各个分段的意义是:

2. malloc 是如何分配内存的

2.1 malloc 概述

实际上,malloc 是 C 标准库函数,而不是系统调用,mmapbrk 是系统调用,malloc 申请内存时有两种方式:

C 标准库中提供 malloc / free 函数分配和释放内存,这两个函数底层由 brk / mmap /unmap 等系统调用实现。

分别什么情况用 brkmmap 呢?
malloc 源码中定义了一个阈值 M_MMAP_THRESHOLD,默认为 128K

2.2 一个例子

2.2.1 首先看看 brk 内存分配

图1-图3

2.2.2 当 mmap 分配较大内存

图3-图6

2.2.3 内存的释放

图7-图9

3. 总结

malloc 细节包括以下几点:

上一篇 下一篇

猜你喜欢

热点阅读