簡體   English   中英

是否可以在不使用brk()系統調用的情況下實現Malloc函數

[英]Can we Implement Malloc function without use of brk() system call

是否可以在不使用brk情況下實現malloc庫函數? 我可以使用sbrk(0)找出程序中斷的當前位置,然后使用sbrk(size)遞增它嗎?

如果是,那么為什么首先添加brk

在大多數當前的Unix中不鼓勵使用brksbrk 取而代之的是, malloc通常以匿名方式調用mmap (無文件支持),並返回頁面地址。

brksbrk假定使用連續的地址空間,現在不再如此。 如今,一個過程可能在不同范圍內具有許多映射,並且它們之間存在未映射的間隙。

POSIX標准還警告我們:

如果應用程序還使用任何其他內存函數(例如malloc(),mmap(),free()),則未指定brk()和sbrk()的行為。 其他功能可能會靜默使用這些其他存儲功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM