分页和非连续内存分配



我对x86_64 Linux 操作系统中的内存管理几乎没有疑问。

  1. 如果我从我的用户空间代码中分配一个 2000 字节的数组(静态 -arr[2000];或动态 -malloc(2000);(,这些将成为物理内存中的连续内存吗?

  2. 如果我分配内存(与上面的示例相同,静态 -arr[2000];或动态 -malloc(2000);(,是否会有页表更新以映射到物理内存中的这些2000 bytes,以便可以从页表条目中找到对这些内存地址的未来引用?

1(不太可能。"你的"malloc(( 可能看起来会产生结果,但你不能依赖它。

你要做的是 malloc(4000(,然后有两个指针。 一个到 malloc,另一个在指针 1+2000。

请注意,当您释放(指针 1( 时,您也会使指针 2 无效。

2(直到您引用区域内的字节。

最新更新