gpt4 book ai didi

arrays - 数组是连续的吗? (虚拟与物理)

转载 作者:行者123 更新时间:2023-12-04 15:56:27 25 4
gpt4 key购买 nike

我读到数组在虚拟内存中是连续的,但可能不在物理内存中,我不明白。

假设我有一个大小为 4KB 的数组(一页 = 一帧大小),在虚拟内存中该数组为一页。

在虚拟内存中,每一页都被翻译成一帧,所以我们的数组仍然是连续的......

(在页表中,我们将页面转换为帧,而不是每个字节都转换为自己的帧...)


附带问题:(在回答这个问题时,请清楚地提及它是为了附带说明):

当在虚拟内存中分配一页大小的数组时,它必须是一页还是可以在虚拟内存中分成两个连续的页面(例如第一个的下半部分和第二个的上半部分)?在这种情况下,最坏的情况是上面的答案是 2,我错了吗?

最佳答案

除非数组的开头恰好与一个内存页的开头对齐,否则它仍然可以占用两页;它可以在接近一页的末尾开始并在下一页结束。在堆栈上分配的数组可能不会被强制占用单个页面,因为堆栈帧只是在堆栈内存中按顺序分配,并且数组通常在每个堆栈帧内处于相同的偏移量。

堆内存分配器(malloc())可以尝试确保小于页面的数组将完全分配在同一页面上,但我我不确定这是否实际上是大多数分配器的实现方式。这样做可能会增加内存碎片。

关于arrays - 数组是连续的吗? (虚拟与物理),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69535746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com