Linux高级调试与优化——用户态堆

Linux进程地址空间

  典型的Linux进程地址空间(虚拟地址)布局如下图,栈从上往下增长,堆从下往上增长。

  对于32位Linux系统而言,其地址总线宽度为32位,4字节对齐,可寻址范围为4GB。进程地址空间中高1GB为内核地址空间,低3GB为用户地址空间。

  对于64位Linux系统而言,其地址总线通常为48位,8字节对齐,可寻址范围为256TB。进程地址空间中高128TB为内核地址空间,低128TB为用户地址空间。

  栈一般是函数调用栈,函数调用时,将父函数的局部变量、临时变量、LR和PC寄存器值压栈,并为子函数创建新的栈帧。堆则用于动态内存分配,比如通过malloc()函数分配内存。

glibc和ptmalloc

用户态堆

猜你喜欢

转载自www.cnblogs.com/justin-y-lin/p/11264856.html