[英]Can we Implement Malloc function without use of brk() system call
是否可以在不使用brk
情況下實現malloc
庫函數? 我可以使用sbrk(0)
找出程序中斷的當前位置,然后使用sbrk(size)
遞增它嗎?
如果是,那么為什么首先添加brk
?
在大多數當前的Unix中不鼓勵使用brk
和sbrk
。 取而代之的是, malloc
通常以匿名方式調用mmap
(無文件支持),並返回頁面地址。
brk
和sbrk
假定使用連續的地址空間,現在不再如此。 如今,一個過程可能在不同范圍內具有許多映射,並且它們之間存在未映射的間隙。
POSIX標准還警告我們:
如果應用程序還使用任何其他內存函數(例如malloc(),mmap(),free()),則未指定brk()和sbrk()的行為。 其他功能可能會靜默使用這些其他存儲功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.