c++内存管理和虚拟内存页面大小

C++ Memory Management and Virtual memory Page size

本文关键字:虚拟内存 内存 管理 c++      更新时间:2023-10-16

谁能解释一下c++ new和Virtual memory page size之间的关系?操作系统将物理内存划分为页(通常为4K),并将其映射到虚拟内存中。我想了解c++的new/delete如何影响页面的分配。

谢谢长子

冒着过度简化的风险:

页面大小和new之间没有真正的关系。大多数c++实现在new.

中调用malloc()来实际分配内存。

大多数malloc实现管理堆内存池。当调用malloc发出当前内存池无法满足的请求时,malloc调用操作系统服务来扩大内存池。

此步骤通常通过请求操作系统将其他页面映射到进程虚拟地址空间来执行。

因此,malloc池的大小将是页面大小的增量。但是,malloc/new通常会忽略页面边界。

Delete/free倾向于简单地将内存返回到malloc池。删除的内存页不会作为页被释放。

一个新的/malloc实现可以用许多不同的方式分配内存。有些以固定大小分配内存(通常会产生多余的内存)。