标签:释放 chunk malloc free 内存 THRESHOLD
一、找到dmaolloc的内存内存释放的机制总结,也很容易反推出其内存分配的机制,挺好的转一下(转自:http://blog.chinaunix.net/uid-796091-id-2035309.html)
1. 不考虑TRIM_FASTBINS的影响,对于小于64个字节(FASTBIN_THRESHOLD)的内存块,free直接将释放的内存块放入fastbin,供下次malloc使用。
2. 对于使用mmap取得的内存块,即大于128k(MMAP_THRESHOLD)的内存块,直接使用munmap来释放内存,不做任何cache操作。
3. 对于大于处在64到128k之间的内存块,释放的时候和前后的chunks做合并,最后把合并所得到的chunk放入unsorted list. malloc可能会在下次分配内存的时候使用它并且同时把unsorted list里面的chunks链入normal bins.
4. 只有当free chunk的大小大于64k(FASTBIN_CONSOLIDATION_THRESHOLD),并且free chunk就是top chunk的时候,sbrk(-size)才会被调用。
http://blog.chinaunix.net/uid-796091-id-2035309.html
标签:释放,chunk,malloc,free,内存,THRESHOLD 来源: https://www.cnblogs.com/dongzhiquan/p/14872656.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。