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