Linux下的栈是由glibc这个库,glibc其实是C运行库,它提供了Linux系统最底层的API(应用程序接口),glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。

​ 例如堆的实现就是由它提供所提供的,那么堆是怎么被它所提供的呢,首先若是你使用malloc这个函数,就会向内核申请一块空间,Linux内存是以页框为单位,一个页框就是4K的大小,这么大的一块空间,若是我只申请malloc(16),内核返回一大片空间(页框),多余的空间由glibc来管理。

① 源头(申请):malloc

② 内核返回一大块空间(以页框为单位)

③ glibc,从一大块的内存挖出程序需要的内存给程序,剩下来的进行管理。

malloc函数操作

1552641464939