Mat*_*man 3 linux windows mmap
我有一个应用程序,使用带有MEM_RESERVE标志的Windows上的VirtualAllocEx保留连续的内存块.这会保留虚拟内存块,但不会使用物理页面或页面文件块进行备份.因此,访问分配的内存将导致分段错误 - 但其他分配将不会与此虚拟内存块相交.
如何使用mmap为Linux做同样的事情?我确实注意到了这个问题的答案,但这确实可以保证,如果我不触摸分配的页面,1 GB的物理内存将不会分配给我的进程吗?我不想要任何颠簸问题.
nne*_*neo 5
我相信你应该能够通过映射匿名内存来实现同样的目标PROT_NONE.访问PROT_NONE内存将导致段错误,但内存区域将被保留,不会用于任何其他目的.如果要分配一大块内存,请添加MAP_NORESERVE以确保默认的overcommit机制不会检查您的分配.
PROT_NONE
MAP_NORESERVE
PROT_NONE 通常用于堆栈末尾的"防护"页面.
归档时间:
12 年,6 月 前
查看次数:
1441 次
最近记录: