释放锁定内存会解锁相应的页面吗?

时间:2013-04-17 09:38:35

标签: c++ c unix memory posix

很清楚如何将mlockall()malloc()结合起来锁定进程在其生命周期中分配的所有页面。通过阅读文档我不清楚的是,释放已锁定内存是否意味着自动解锁相应的页面。

1 个答案:

答案 0 :(得分:2)

如果free将内存返回给系统(即它已分配mmap并且将被munmap释放),则锁定将在取消映射时自动删除。这通常是大量分配的情况。

如果free将内存返回到进程内管理的堆,则锁定将保留。这通常是小额分配的情况。

在GNU / Linux上,您可以使用mallopt来获取和设置使用mmap的分配阈值;默认(在我的电脑上,至少)是128kb。在其他Unix版本中,如果需要该级别的控制,则可能需要直接使用mmap