在Windows上,内存中的数据是否可以跨虚拟内存页连续存在?

在Windows上,内存中的数据是否可以跨虚拟内存页连续存在?,windows,memory,memory-management,Windows,Memory,Memory Management,在Windows上,内存中的数据是否可以跨虚拟内存页连续存在 比如说, 字符串“hello”,其中“he”在一页上,“llo”在下一页上 如果可能,任何超过最大页面大小的大数据块 当然可以 内存页可能不会在物理内存中连续出现,但通过虚拟内存的魔力,您的程序也不会变得更聪明。当然 内存页可能不会在物理内存中连续出现,但通过虚拟内存的魔力,您的程序不会变得更聪明。VirtualQueryEx不会返回单个页面,而是返回具有相同访问权限的页面范围。如果你问一个字符串是否可以跨越两个具有不同访问权限的页

在Windows上,内存中的数据是否可以跨虚拟内存页连续存在

比如说,

  • 字符串“hello”,其中“he”在一页上,“llo”在下一页上
  • 如果可能,任何超过最大页面大小的大数据块
  • 当然可以

    内存页可能不会在物理内存中连续出现,但通过虚拟内存的魔力,您的程序也不会变得更聪明。

    当然


    内存页可能不会在物理内存中连续出现,但通过虚拟内存的魔力,您的程序不会变得更聪明。

    VirtualQueryEx
    不会返回单个页面,而是返回具有相同访问权限的页面范围。如果你问一个字符串是否可以跨越两个具有不同访问权限的页面,理论上是的,但这通常是非常罕见的。您想要的字符串更有可能被交换到磁盘。

    VirtualQueryEx
    不返回单个页面,而是返回具有相同访问权限的页面范围。如果你问一个字符串是否可以跨越两个具有不同访问权限的页面,理论上是的,但这通常是非常罕见的。您想要的字符串更有可能被交换到磁盘。

    “页面”指的是虚拟内存地址块,因此根据定义,答案是肯定的。我想你指的是物理内存块。谢谢,罗宾和亚当。在这种情况下,我考虑的是虚拟内存页。是的,我知道,但这并不能澄清问题。您是否考虑过它们与虚拟地址或物理地址的连续性?虚拟地址。如果我不够清楚,我很抱歉。如果有帮助的话,我会解释我在做什么。我使用VirtualQueryEx浏览页面,然后我想用ReadProcessMemory搜索“hello”。如果整个“hello”可以放在两个不同的页面上,我需要考虑这一点,这会使它变得更复杂。有帮助吗?“Page”指的是虚拟内存地址块,所以根据定义,答案是肯定的。我想你指的是物理内存块。谢谢,罗宾和亚当。在这种情况下,我考虑的是虚拟内存页。是的,我知道,但这并不能澄清问题。您是否考虑过它们与虚拟地址或物理地址的连续性?虚拟地址。如果我不够清楚,我很抱歉。如果有帮助的话,我会解释我在做什么。我使用VirtualQueryEx浏览页面,然后我想用ReadProcessMemory搜索“hello”。如果整个“hello”可以放在两个不同的页面上,我需要考虑这一点,这会使它变得更复杂。有帮助吗?啊。。我把它们看作是单独的页面。嗯,我现在觉得有点愚蠢,因为我问错了问题,甚至误解了它的工作原理。我道歉。我甚至不配得到那张选票。我想选择你的答案和约瑟夫的答案,因为如果他像我那样指的是页数范围,我不认为他完全错了(但我不是专家)。非常感谢。也许有人能把我的问题变成百万个闪闪发光的魔法?呵呵.)啊。。我把它们看作是单独的页面。嗯,我现在觉得有点愚蠢,因为我问错了问题,甚至误解了它的工作原理。我道歉。我甚至不配得到那张选票。我想选择你的答案和约瑟夫的答案,因为如果他像我那样指的是页数范围,我不认为他完全错了(但我不是专家)。非常感谢。也许有人能把我的问题变成百万个闪闪发光的魔法?呵呵.)