我如何释放sbrk()获得的内存?

use*_*707 15 c unix memory-management sbrk

我有一个自定义分配器函数,它使用sbrk()来获取内存.如何在不再需要时释放此内存?

malloc()是否有一个等效于free()的函数?

或者我是否必须使用brk()来设置数据段的结尾?

Ark*_*nez 25

您需要使用brksbrk再次缩小.

最后,你必须修改内存量(除了像syscalls这样的mmap)的唯一方法是增加或减少堆,所以你用sbrk或者向上brk移动它,然后用brk或者sbrk用负增量向下移动它.

  • -1,你可以用`sbrk`减少,只是传递一个负值. (6认同)
  • 唯一要担心的是你的代码之外的其他东西是否称为'sbrk()'并且有内存,而你的调整向下会使内存无法使用其他内容. (2认同)