VirtualAllocEx是否可以分配多个页面

时间:2013-03-04 05:47:54

标签: c++ winapi

有人知道API Win32中的函数VirtualAllocEx在调用它时是否可以分配多个页面吗?

例如我想分配100Mo。我叫这个功能。可以将分配的内存分成多个页面(一次调用),还是只分配一个具有确切大小的页面?

我执行了一些测试,它似乎只分配了一个具有确切大小的页面。我在这里提出这个问题,因为MSDN上的以下文字让我感到困惑:

  

每个页面都有一个关联的页面状态。 VirtualAllocEx函数   可以执行以下操作:

     
      
  • 提交保留页面区域
  •   
  • 预订免费页面区域
  •   
  • 同时保留并提交免费页面区域
  •   

那么,微软是否谈到通常使用此功能分配内存(意思是我们可以通过多次调用分配几个页面),或者它可以在一次调用中分配多个页面。

谢谢。

2 个答案:

答案 0 :(得分:2)

页面始终具有固定大小(例如,4Kb)。如果分配16Kb,则分配4个页面,即使它们被分配为单个块。

如果你想问VirtualAllocEx是否可以分配几个不同的内存块然后没有,从判断它只返回一个指针,它不能。它返回一个您请求或更大的内存块。

答案 1 :(得分:1)

VirtualAllocEx将根据需要分配任意数量的页面。页面具有以KB为单位的固定大小,因此如果您分配100Mb,它肯定会分配许多页面。我认为,当你说页面时,你的意思是不同的。