gpt4 book ai didi

c++ - 为什么 malloc_trim() 只适用于主场?

转载 作者:太空狗 更新时间:2023-10-29 21:48:15 26 4
gpt4 key购买 nike

glibc 的 malloc 实现支持“malloc_trim()”调用,它允许应用程序将未使用的(即释放的内存块)释放回系统(实现细节:程序的数据段通过调用带有负数的 sbrk() 来减少争论)。但是,此功能仅适用于主竞技场。在多线程程序中,有多个存放已释放 block 的区域。为什么这个调用也没有从其他区域释放内存?

最佳答案

主区域以外的区域可能是使用 mmap 从系统分配的,因此 sbrk 不能用于将该内存返回给系统。可以让 glibc 使用 mremap 来缩小这些其他领域。另请注意,malloc_trim 只能在竞技场的尽头返回内存,如果竞技场中间有空 block ,则无法释放该内存。

关于c++ - 为什么 malloc_trim() 只适用于主场?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11196482/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com