我对x86_64 Linux操作系统中的内存管理毫不怀疑。
如果我从用户空间代码中分配了2000个字节的数组(静态-arr[2000];
或动态-malloc(2000);
),这些将成为物理内存中的连续内存吗?
如果我分配内存(与上面的示例相同,静态-arr[2000];
或动态-malloc(2000);
)将更新页表以映射到物理内存中的这些2000 bytes
,以便将来引用这些内存地址可以从页表条目中找到?
1)非常不可能。 [您的] malloc()可能会产生结果,但您不能依靠它。
您想要做的是malloc(4000),然后有两个指针。一个指向malloc,另一个指向指针1 + 2000。
请注意,当您释放(pointer1)时,也会使pointer2无效。
2)直到您引用该区域内的一个字节。