内存布局
介绍ptmalloc之前,我们首先来了解一下X86 平台 Linux 进程内存布局,以32位系统为例:

从上图可以看到,栈至顶向下扩展,堆至底向上扩展, mmap 映射区域至顶向下扩展。 mmap 映射区域和堆相对扩展,直至耗尽虚拟地址空间中的剩余区域,这种结构便于 C 运行时库使用 mmap 映射区域和堆进行内存分配。
brk(sbrk)和mmap函数
首先,linux系统向用户提供申请的内存有 brk(sbrk) 和 mmap 函数。下面我们先来了解一下这几个函数。
brk() 和 sbrk()
#include <unistd.h>