"系统分配内存时,首地址必须是分配粒度(64K)的整数倍。"

还以为这里的粒度是翻译不到位,翻了原文,allocation granularity,确确实实是粒度,没错。

在嗷酱和嘟酱的帮助下发现原来是酱紫的:

http://blogs.msdn.com/b/oldnewthing/archive/2003/10/08/55239.aspx

 

 

LPVOID

    WINAPI

    VirtualAlloc(

    LPVOID lpAddress,

    SIZE_T dwSize,

    DWORD flAllocationType,    // MEM_RESERVE,预订区域而不是调拨物理存储器

    DWORD flProtect

    );

// 从高地址预订内存地址,可以避免可能会引起的内存碎片。

// 如果想要尽可能从高地址预订区域,必须

// lpAddress = NULL

// flAllocationType= MEM_RESERVE|MEM_TOP_DOWN

 

 

SIZE_T GetLargePageMinimum(); // 获得大页面分配粒度

 

大页面会得到更好的性能是因为Windows认为MEM_LARGE_PAGE标志分配得到的内存是不可换页的unpagable.

相关文章:

  • 2022-01-04
  • 2022-12-23
  • 2021-10-27
  • 2021-06-16
  • 2021-05-17
  • 2021-12-09
猜你喜欢
  • 2022-12-23
  • 2022-02-16
  • 2022-12-23
  • 2021-11-22
  • 2021-04-21
  • 2022-12-23
相关资源
相似解决方案