Windows BaseAddress和AllocationBase以及AllocationProtect和Protect in_MEMORY_基本信息结构之间的区别是什么?

Windows BaseAddress和AllocationBase以及AllocationProtect和Protect in_MEMORY_基本信息结构之间的区别是什么?,windows,operating-system,virtualalloc,virtualquery,Windows,Operating System,Virtualalloc,Virtualquery,\u内存\u基本信息包含描述地址空间的字段。我想知道BaseAddress和llocationBase之间有什么区别BaseAddress是区域的基址,什么是AllocationBase 另外,我想知道AllocationProtect和Protect之间的区别。我了解一点,但不确定,我认为当我们保留区域时,AllocationProtect是保护属性,Protect是我们使用参数MEM\u COMMIT调用VirtualAlloc时的保护属性。如果是这样,当我们只保留区域时,保护字段是什么 调

\u内存\u基本信息
包含描述地址空间的字段。我想知道
BaseAddress
llocationBase
之间有什么区别
BaseAddress
是区域的基址,什么是
AllocationBase

另外,我想知道
AllocationProtect
Protect
之间的区别。我了解一点,但不确定,我认为当我们保留区域时,
AllocationProtect
是保护属性,
Protect
是我们使用参数
MEM\u COMMIT
调用
VirtualAlloc
时的保护属性。如果是这样,当我们只保留区域时,
保护
字段是什么

调用VirtualAlloc()时,可以分配一段跨越多个页面的内存。当ValualQuices()在该节的中间一个页面时,ApLoalStudio将是ValualLoalc的返回值,它是由ValualLoCube()分配的内存的开始。BaseAddress将是您查询的单个页面的基址

下面是一个示例程序,显示了它的作用:

intmain()
{
intptr\u t addr=(intptr\u t)VirtualAlloc(0,0x3000,MEM\u COMMIT,PAGE\u READWRITE);
存储器基本信息mbi{0};
虚拟查询((void*)(addr+0x2000),&mbi,sizeof(mbi));
intptr\u t middleAddr=addr+0x2000;
STD::CUT< P>当你调用ValualLoCube()时,你可以分配一个跨越多个页面的内存段。当你在ValualQuices()页面中的一个页面时,分配库将是ValualLoalc的返回值,它是由ValualLoCube()分配的内存的开始。.BaseAddress将是您查询的单个页面的基址

下面是一个示例程序,显示了它的作用:

intmain()
{
intptr\u t addr=(intptr\u t)VirtualAlloc(0,0x3000,MEM\u COMMIT,PAGE\u READWRITE);
存储器基本信息mbi{0};
虚拟查询((void*)(addr+0x2000),&mbi,sizeof(mbi));
intptr\u t middleAddr=addr+0x2000;
标准::cout
VirtualAlloc returned = 0x5d0000
Middle Address Queried = 0x5d2000
mbi.AllocationBase = 0x005D0000
mbi.BaseAddress = 0x005D2000