[英]Use mmap to allocate memory
我需要分配內存,但是我不能使用malloc
因為它不能重入,所以基本上我將使用POSIX mmap
函數實現動態內存分配。 可以使用mmap
嗎?
是的,mmap()應該是可重入的,因此您應該可以使用它。
請注意,mmap()通常是一個非常慢的操作,因此最好只在確實需要它的情況下(希望)在很少(且很少)之間使用它,而不是用作通用的malloc()替換。
POSIX 2008包含可以從信號處理程序函數安全調用的異步信號安全函數的列表(請參閱鏈接中的2.4.2節中的表)。 mmap()不在該列表中,也就是說,從信號處理函數調用mmap()可能導致未定義的行為。
您可以做的是避免在信號處理程序中分配內存,只需設置一些標志並在以后進行實際工作即可。
編輯:用線程安全替換可重入
在大多數操作系統上,malloc是線程安全的。
您正在使用哪一個,並且確定它不是線程安全的? 還是您需要它可重入(我想不是)?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.