C内存映射

标签 c memory memory-management virtual-address-space

我知道有两种类型的地址。虚拟和物理。打印整数变量的地址将打印其虚拟地址。是否有一个函数可以帮助打印该变量的物理内存?

虚拟内存是指硬盘上被操作系统视为内存的部分吗?

最佳答案

不,没有这样的(可移植)功能。在实现内存保护的现代操作系统中,用户空间(与内核空间相对,即操作系统的一部分)无法直接访问物理地址,这是不允许的。所以没有什么意义。

不,虚拟内存不需要涉及硬盘,那是“交换”或“分页”。一旦拥有虚拟内存,您就可以实现它,因为它让操作系统有机会干预和管理哪些页面保留在物理内存中,从而可以将内存“分页”到其他存储介质。

要深入了解 Linux 内核如何管理内存,this blog post太棒了。

关于C内存映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10616657/

相关文章:

c - 结构成员 - 地址重叠

memory-management - Datadog % 内存使用率和 RSS 内存

c - C编译器中是否有 Debug模式编译标志的标准?

c - 如何在 linux 中获取 C 中可用内存的总大小?

c - 在将数组的递增地址传递给函数时如何获得此输出?

c - 在函数外释放内存会导致双重释放或损坏错误

c++ - 使用 __declspec 的内存填充问题

c - X86 CPU 如何将地址转换为 VGA 文本缓冲区等 IO?

从 2s 补码转换为十六进制

c - 如何优化c中的双增量?