2012-02-06 79 views

回答

1

VirtualLock锁定进程的虚拟 地址空间到物理内存的指定区域,确保随后访问 该地区不会招致页面错误

VirtualAlloc向内核请求内存 - 即在分配之后,你得到一块新的内存来玩。内核通常需要换出内存来为其他东西腾出空间。 VirtualLock要求内核不要换出内存区域

+0

+1,但请注意,您(正确)引用的“VirtualLock”文档在说谎。措辞“不会导致页面错误”表明还没有存在的页面被创建,但事实并非如此。最好的情况是''VirtualLock''将阻止现有页面被换出(如果它不仅仅是在静默中失败,通常会这样做,因为很少有人知道低工作集的默认设置,很少有人真正检查返回代码)。 – Damon 2012-02-06 09:33:11

+0

@Damon尼斯,很高兴知道。我其实对于win32编程没有多少经验。 – cnicutar 2012-02-06 09:34:10

+0

如果你有兴趣,你可以阅读一下我的观察[这里](http://stackoverflow.com/q/7874281/572743)。总而言之,这是令人失望的,因为你所衡量的不是你认为应该发生的事情,也不是你所说的。 – Damon 2012-02-06 09:41:47