指针中的地址是指什么,主存储器或虚拟地址中的实际地址位置。可以配置吗?
如果它引用虚拟地址,那么每次访问时,内存管理器都需要将该地址转换为实际地址
答案 0 :(得分:12)
这取决于您的系统和操作系统。
对于典型的Windows / linux用户空间应用程序,地址是虚拟内存地址。用户空间应用程序无法使用物理地址访问内存 - 这是操作系统为每个进程提供的抽象之一。
MMU(内存管理单元)为每次内存访问执行此转换,并由操作系统为您的进程设置corect映射。
答案 1 :(得分:4)
如果您的系统使用VM,那么该地址是虚拟的,如果不是,则不是。这与C或C ++无关。
答案 2 :(得分:1)
换句话说,作为开发人员/程序员,您不必担心地址是虚拟的还是真实的。指针在所有情况下都能完美运行。
答案 3 :(得分:1)
在某些操作系统中,您正在与实际的物理地址进行交互,例如在旧的MS-DOS / Apple] [操作系统,您可以直接在实际的图形内存中搜索。但是这有限制,你的程序被困在内存中的某个位置。一个简化的现代操作系统有一个内存管理器,通常屏蔽应用程序与实际的物理内存,这使操作系统能够以更有效的方式处理多个进程,并允许应用程序虚拟内存。
答案 4 :(得分:1)
在具有虚拟内存的实际操作系统上,当然无法配置,因为正常进程无权查看和戳入物理内存;他们只看到虚拟记忆。