c语言中返回的变量地址,其物理地址在?(刨根问底)

首先明确一点c语言中返回来的地址是虚拟地址(逻辑地址),虚拟地址和物理地址之间的转化是操作系统自动进行完成的。

有关c语言中返回的地址不是物理地址这里提供一个链接:

https://blog.csdn.net/fenggewan/article/details/88408734

逻辑地址,是操作系统分配给你可执行程序的物理地址空间上映射出来的逻辑地址。

一般地逻辑地址和物理地址没有直接的关系,这个转换由操作系统完成并维护,与你的程序无关。

特殊地某些地址,比如说中断向量地址,再比如说串口等物理端口地址这些是由硬件决定的,你的变量如果映射到这些的话返回的就是物理地址

有关

虚拟地址、逻辑地址、线性地址、物理地址的区别(这篇简书中有提到)

作者:vbuer
链接:https://www.jianshu.com/p/42a4c21bcef4
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 虚拟地址:指的是由程序产生的由段选择符和段内偏移地址两个部分组成的地址。为什么叫它是虚拟的地址呢?因为这两部分组成的地址并没有直接访问物理内存,而是要通过分段地址的变换机构处理或映射后才会对应到相应的物理内存地址。
  • 逻辑地址:指由程序产生的与段相关的偏移地址部分。不过有些资料是直接把逻辑地址当成虚拟地址,两者并没有明确的界限。
  • 线性地址:指的是虚拟地址到物理地址变换之间的中间层,是处理器可寻指的内存空间(称为线性地址空间)中的地址。程序代码会产生逻辑地址,或者说是段中的偏移地址,加上相应段的基地址就生成了一个线性地址。如果启用了分页机制,那么线性地址可以再经过变换产生物理地址。若是没有采用分页机制,那么线性地址就是物理地址。
  • 物理地址:指的是现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果。
如果你找到了对本篇博客有用的信息,欢迎在我的博客下方留言,这是我找的够用的信息。

猜你喜欢

转载自www.cnblogs.com/littleswan/p/12166899.html