VirtualAlloc使用大页面的步骤和例子
使用大页面支持的步骤:
1 运行->secpol.msc
2 在本地策略->用户权限分配->锁定内存页。双击锁定内存页添加用户或组,默认将Administrators组添加进去,并注销重新登陆系统。
3 使用GetLargePageMinimum得到大页面的尺寸
4 使用MEM_LARGE_PAGES标志提交内存。
注意:运行该程序时需要进行设置。右键工程->属性->配置属性->链接器->清单文件->UAC执行级别(requireAdministrator (/level='requireAdministrator')),因为你为Administrator分配了锁定内存权限。
代码如下:
int _tmain(int argc, _TCHAR* argv[])
{
srand((unsigned int)time(NULL));
BYTE* pBuffer = NULL;
//提升权限
// RaisePrivleges(SE_LOCK_MEMORY_NAME,TRUE);
//1 得到GetLargePageMinimun得到大页面的尺寸
SIZE_T szLargePage = GetLargePageMinimum();
//2 保留空间
pBuffer = (BYTE*)VirtualAlloc(0,64*szLargePage,MEM_RESERVE ,PAGE_READWRITE);
//3 MEM_COMMIT | MEM_LARGE_PAGES
VirtualAlloc(pBuffer,2*szLargePage,MEM_COMMIT|MEM_LARGE_PAGES,PAGE_READWRITE);
//使用内存
double* pdbArray = (doub