我知道有两种类型的地址。虚拟和物理。打印整数变量的地址将打印其虚拟地址。是否有一个函数可以帮助打印该变量的物理内存?
虚拟内存是指硬盘上被操作系统视为内存的部分吗?
最佳答案
不,没有这样的(可移植)功能。在实现内存保护的现代操作系统中,用户空间(与内核空间相对,即操作系统的一部分)无法直接访问物理地址,这是不允许的。所以没有什么意义。
不,虚拟内存不需要涉及硬盘,那是“交换”或“分页”。一旦拥有虚拟内存,您就可以实现它,因为它让操作系统有机会干预和管理哪些页面保留在物理内存中,从而可以将内存“分页”到其他存储介质。
要深入了解 Linux 内核如何管理内存,this blog post太棒了。
关于C内存映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10616657/