分页和非连续内存分配

问题描述 投票:0回答:1

我对x86_64 Linux操作系统中的内存管理毫不怀疑。

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

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

memory-management linux-kernel paging virtual-memory page-fault
1个回答
0
投票

1)非常不可能。 [您的] malloc()可能会产生结果,但您不能依靠它。

您想要做的是malloc(4000),然后有两个指针。一个指向malloc,另一个指向指针1 + 2000。

请注意,当您释放(pointer1)时,也会使pointer2无效。

2)直到您引用该区域内的一个字节。

© www.soinside.com 2019 - 2024. All rights reserved.