其他分享
首页 > 其他分享> > malloc,free发生了什么

malloc,free发生了什么

作者:互联网


malloc_trim的手册页说它释放了空闲内存,所以如果堆中有分配的内存,它将不会释放整个堆.如果你知道你仍然需要一定数量的内存,那么参数就在那里,因此释放更多内容会导致glibc以后不得不做不必要的工作.至于漏洞,这是内存管理和向OS返回内存的标准问题.程序可用的主要低级堆管理是brk和sbrk,他们所能做的就是通过更改顶部来扩展或缩小堆区域.因此他们无法向操作系统返回漏洞;一旦程序调用sbrk来分配更多堆,只有当该空间的顶部空闲且可以返回时才能返回该空间.

请注意,还有其他更复杂的方式来分配内存(例如,使用匿名mmap),这些方法可能具有与基于sbrk的分配不同的约束.

标签:返回,malloc,sbrk,释放,发生,free,空闲,内存
来源: https://www.cnblogs.com/redman274/p/15308701.html