【发布时间】:2010-08-08 11:04:11
【问题描述】:
指针中的地址指的是什么,主内存中的实际地址位置或虚拟地址。是否可以配置。
如果它是指虚拟地址,内存管理器是否需要在每次访问时将此地址转换为真实地址
【问题讨论】:
标签: c++ c pointers memory-management
指针中的地址指的是什么,主内存中的实际地址位置或虚拟地址。是否可以配置。
如果它是指虚拟地址,内存管理器是否需要在每次访问时将此地址转换为真实地址
【问题讨论】:
标签: c++ c pointers memory-management
这取决于您的系统和操作系统。
对于典型的 windows/linux 用户空间应用程序,地址是虚拟内存地址。用户空间应用程序无法使用物理地址访问内存——这是操作系统为每个进程提供的抽象之一。
MMU(内存管理单元)对每次内存访问进行此转换,由操作系统为您的进程设置正确映射。
【讨论】:
如果您的系统使用 VM,则该地址是虚拟的,如果不是,则不是。这与 C 或 C++ 无关。
【讨论】:
换句话说,作为开发人员/程序员,您不必担心地址是虚拟的还是真实的。指针在所有情况下都能完美运行。
【讨论】:
在某些操作系统中,您正在与实际的物理地址进行交互,例如在旧的 MS-DOS/Apple ][ 操作系统中,您可以直接在实际图形内存中四处寻找。但是,这有一个限制,即您的程序被卡在内存中的某个位置。稍微简化的现代操作系统有一个内存管理器,它通常将应用程序与实际物理内存隔离开来,这使操作系统能够以更有效的方式处理多个进程并允许应用程序使用虚拟内存。
【讨论】:
在有虚拟内存的真实操作系统上,当然不能配置,因为正常进程是没有权限偷看物理内存的;他们只看到虚拟内存。
【讨论】: