amliaW4.github.io

title: 堆内存小记 (不定时更新)

date: 2018-06-15 22:19:27

categories:

健忘,所有才有这篇 “速查笔记” (:з」∠) (水平有限难免会有错误)

在glibc中用于记录bin的数据结构有两种,分别如下所示:

bin 1 为unsorted bin bin 2 到63为small bin bin 64到126为large bin

Fastbins

14641459278751

Bins

Unsorted bin

Small bin

Large bin

内存申请顺序

最初所有的small bin都是空的,因此在对这些small bin完成初始化之前

用户请求的内存大小属于small chunk也不会交由small bin进行处理,而是交由unsorted bin处理,

如果unsorted bin也不能处理的话,glibc malloc就依次遍历后续的所有bins,找出第一个满足要求的bin,如果所有的bin都不满足的话,就转而使用top 

如果top chunk大小不够,那么就扩充top chunk

14641459364705

参考

http://www.freebuf.com/articles/security-management/105285.html