@hol1owpwn glibc堆利用——chunk结构 中发帖

glibc动态内存分配
写C语言时,如果想申请或释放内存,就需要malloc和free函数。从linux内核层面来看,往往会用到这两个系统调用: 

mmap
brk

其中,brk会将进程的heap段向内存高位扩充,可以理解为把堆顶抬高了。而mmap则在heap段和stack段之间申请匿名内存(不用担心这片区域被填满,64位系统下,你的电脑内存加起来都没它大)。 
结合linux进程的简化内存分布,更加直观一些: 

低地址 
[text] 
[data] 
[bss] 
[heap][mmap region][stack] 
高地址 

释放内存的系统调用也有两个: 

munmap
brk

(没错,brk也可以收缩堆空间) 
这两种分配方式的区别在于,mmap一般用来申请大块内存(默认值大约是128KB以上) 
但是呢,问题出现了。每次进行系统调用时,都要从ri...
 
 
Back to Top