假设我们有64个字节的页面。在虚拟内存空间中,在[0,4)处分配了一个4字节的int
,现在我们要分配一个10 double
的数组。例如,如果malloc决定将数组放置在[4,84),则将有一个double
穿过页面0和页面1处于[60,68)。当我们尝试访问该元素时会发生什么?
答案 0 :(得分:0)
简短答案:CPU将读取该值。
好答案:我们需要澄清一些假设:
N * sizeof(primitive-value-type)
的地址访问,其中N是整数。内存管理功能和编译器都知道这一点,因此它们会自动在这些平台上对齐分配。答案 1 :(得分:0)
页面边界仅对内存分配和逻辑地址转换有意义。该应用程序看不到页面边界(分配页面时除外)。应用程序只看到一个连续的逻辑地址空间。