【发布时间】:2014-07-14 09:37:10
【问题描述】:
谁能解释一下 C++ new 和虚拟内存页面大小之间的关系。操作系统将物理内存划分为页面(通常为 4K),并将其映射到虚拟内存中。我想了解 C++ new/delete 是如何影响页面分配的。
谢谢 纳耶姆
【问题讨论】:
-
当你开始使用它时,
operator new使用操作系统 API 来请求内存。这只是提出请求的另一种方式。通过内置运算符的事实并不意味着正在发生其他事情。 -
C++/C 库必须以一种或另一种方式向操作系统请求内存。根据方法,它可能会以 4k 粒度接收内存(但当然会从该页面提供后续的 malloc() 直到它被耗尽)。有关概述,请参阅 en.wikipedia.org/wiki/…。
-
感谢您的回复,现在如果我想优化我的程序,在我的 malloc/new 向操作系统释放内存之前,我不会看到任何变化。对于我们的产品,我们做了很多优化,但与旧版本相比,我们可以看到使用的 RAM 量有任何差异。我很难说服我的经理允许我将开发资源用于优化。是否有任何指南/工具有助于减少进程的内存占用?
标签: c++ memory-management operating-system