Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个自定义分配器函数,它使用 sbrk() 来获取内存。不再需要时如何释放此内存?
malloc() 是否有与 free() 等效的功能?
还是我必须使用 brk() 来设置数据段的结尾?
您需要使用brk或sbrk再次缩小。
brk
sbrk
最后,你必须修改内存量的唯一方法(除了像系统调用这样的 mmap )是增加或减少堆,所以你用sbrkor向上移动它,然后用负增量或brk向下移动它。brksbrk
不要使用brk和sbrk。几乎不可能知道哪些库函数可能会调用malloc,并且可能会随着时间的推移而改变,所以即使你的程序现在可以工作,当有人升级 libc 时它也可能会中断。他们被排除在 POSIX 之外是有充分理由的。
malloc