malloc的内存用free释放后为何系统回收不了

要解释这个问题首先要了解Linux进程使用内存的基本流程,进程的堆并不是直接建立在Linux的内核的内存分配策略上的,而是建立在glibc的堆管理策略上的(也就是glibc的动态内存分配策略上),堆的管理是由glibc进行的。所以我们调用free对malloc得到的内存进行释放的时候,并不是直接释放给操作系统,而是还给了glibc的堆管理实体,而glibc会在把实际的物理内存归还给系统的策略上做一些优化,以便优化用户任务的动态内存分配过程。 glibc维护了不止一个不定长的...

» 阅读全文

Tags: malloc

回顶部