malloc在哪里返回内存?

Ern*_*uan 0 c linux memory memory-management

我正在学习mallocC中的功能.我知道如何请求内存

p = malloc(number_of_bytes);
Run Code Online (Sandbox Code Playgroud)

并在以后不使用时释放它

free(p);
Run Code Online (Sandbox Code Playgroud)

但是我想要了解一些理论上的东西:我知道有了虚拟内存,有三种可能性:

  1. 虚拟地址无法分配物理存储(在页面文件或物理内存中)

  2. 虚拟地址可以在页面文件上具有物理存储

  3. 虚拟地址可以在物理内存上具有物理存储

所以,我的问题是:

malloc返回内存在哪里(我的意思是,它是在页面文件上,在物理内存上(堆可能?))?

das*_*ght 5

是在页面文件上,在物理内存上?

在具有虚拟内存管理的操作系统上,malloc不知道它分配的虚拟内存如何映射到物理内存,这完全是设计的.malloc操作在比虚拟内存管理器更高的级别上.对于mallocOS提供的地址空间中的所有内存都是相同的.

有些页面可能以物理映射开始,以后稍后要换成文件,然后根据需要返回内存.但是,操作系统会对您的程序透明地执行所有这些操作,因此malloc不了解物理内存.