malloc/new是否从Cache或RAM返回内存块?

mah*_*esh 3 c c++ memory memory-management

我想知道malloc/new是否从Cache或RAM返回内存块.

提前致谢.

Ark*_*nez 16

当你在操作系统中作为一个进程生存时,你就被抽象了,你只能获得记忆.

您不应该担心这一点,操作系统将为您管理所有这些,并且内存单元将把事物从一个移动到另一个.但是你仍然可以看到一个虚拟内存布局.

  • @mahesh - 你有2个选项(在x86上,我无法帮助其他平台,遗憾的是)我知道这个问题.首先,您可以完全关闭缓存,在x86控制寄存器上查找有关如何执行此操作的详细信息.其次,您可以在SSE指令集扩展中使用"非时间"存储器指令,这些指令绕过正常存储器操作的高速缓存行读取.您可以在非时间存储器指令的SSE指令集上查找引用. (3认同)
  • 话虽这么说,如果您需要精确控制内存的分配位置以及操作系统将使用它做什么(例如将其标记为"不要翻页"),那么您需要使用操作系统的本机API. (2认同)

Nav*_*een 5

来自虚拟内存.只要进程需要,操作系统就会将所需的页面放入RAM中.