簡體   English   中英

使用mmap分配內存

[英]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.

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