询问printf

1 memory printf memory-address

当我们打印变量的地址时,哪个地址被打印?

如果是虚拟内存,为什么会这样呢?

任何人都可以解释一下......

Cat*_*Man 5

在现代桌面/服务器操作系统上,所有内存都是虚拟内存.我不知道有任何方法可以从内核外部访问底层物理地址.即使有可能,它也不会在绝大多数情况下有用.

因此,如果这样做printf("%p", (void*)&variable);,将打印当前进程的变量的虚拟地址.

  • 您可能希望将"现代操作系统"更改为"现代*桌面/服务器*操作系统",因为有大量嵌入式操作系统不使用VM. (2认同)