指针中的哪个位置地址指的是

时间:2010-08-08 11:04:12

标签: c++ c pointers memory-management

指针中的地址是指什么,主存储器或虚拟地址中的实际地址位置。可以配置吗?

如果它引用虚拟地址,那么每次访问时,内存管理器都需要将该地址转换为实际地址

5 个答案:

答案 0 :(得分:12)

这取决于您的系统和操作系统。

对于典型的Windows / linux用户空间应用程序,地址是虚拟内存地址。用户空间应用程序无法使用物理地址访问内存 - 这是操作系统为每个进程提供的抽象之一。

MMU(内存管理单元)为每次内存访问执行此转换,并由操作系统为您的进程设置corect映射。

答案 1 :(得分:4)

如果您的系统使用VM,那么该地址是虚拟的,如果不是,则不是。这与C或C ++无关。

答案 2 :(得分:1)

换句话说,作为开发人员/程序员,您不必担心地址是虚拟的还是真实的。指针在所有情况下都能完美运行。

答案 3 :(得分:1)

在某些操作系统中,您正在与实际的物理地址进行交互,例如在旧的MS-DOS / Apple] [操作系统,您可以直接在实际的图形内存中搜索。但是这有限制,你的程序被困在内存中的某个位置。一个简化的现代操作系统有一个内存管理器,通常屏蔽应用程序与实际的物理内存,这使操作系统能够以更有效的方式处理多个进程,并允许应用程序虚拟内存。

答案 4 :(得分:1)

在具有虚拟内存的实际操作系统上,当然无法配置,因为正常进程无权查看和戳入物理内存;他们只看到虚拟记忆。