C中变量的地址是计算机RAM中的实际地址吗?

Som*_*oii 5 c memory memory-address

在C中,当你得到一个变量的地址时,该地址确实存在于计算机的RAM中,或者只是C编译器中假存储器中的地址(如果这是真的有效)?你能用外行的话解释一下吗?

小智 4

是和不是。当您获取变量的地址并对它执行一些操作(假设编译器没有对其进行优化)时,它将对应于 ram 中的地址。然而,由于虚拟内存的存在,程序中使用的地址几乎肯定不是物理内存中变量的地址。内核重新​​映射哪些虚拟地址(您的程序所看到的)引用了哪些物理地址(内存所看到的),以便不同的进程可以同时加载到内存中,但不能访问彼此的内存。此外,如果最近未使用进程的内存和/或其他需要更多内存的进程的内存可以被调出或写入磁盘,并重新加载到完全不同的地址,但虚拟地址将保持不变。

所以是的,当您访问指针时,该地址对应于内存中的地址。但该地址并不对应于ram中的实际地址,并且它对应的地址会随着时间的推移而改变。