C语言中的虚拟地址是什么?

文章目录

背景

今天看RXW源码的时候,看到了一个虚拟地址,我就很好奇,为什么要用虚拟地址呢?

在这里,buffer是一个MEDIA_BUFFER类型,而MEDIA_BUFFER是一个泛型指针

通过将这个泛型指针转换为MEDIA_BUFFER_IMPLE结构体指针类型,BUFFER指针指向了一个结构体,这个结构体里void* ptr指针参数【作者称之为虚拟地址】,这个参数指向的内存是否就是保存我们真实图像内容的内存?
C语言中的虚拟地址是什么?
C语言中的虚拟地址是什么?

C语言中的虚拟地址是什么?

虚拟地址

那么为什么作者称这个结构体里的void* ptr为缓存的虚拟地址呢?

因为在计算机里面,虚拟地址和物理地址的映射关系由操作系统决定,不是人为决定的,每个虚拟地址都能链接到真实的物理地址,通过使用虚拟地址,不同程序中也能有相同的(虚拟)地址,但是链接的却是不同的物理地址,这让它们不会相互影响对方所指向的内存。

此外还涉及到内存分页机制的问题,

现代计算机都使用分页(Paging)的方式对虚拟地址空间和物理地址空间进行分割和映射,以减小换入换出的粒度,提高程序运行效率。

具体可以自己慢慢去了解,,,我反正是看不怎么懂

参考文章1:c语言中的虚拟地址

参考文章2:c语言入门-内存分页机制,完成虚拟地址的映射

上一篇:Linux离线安装MySQL5.7


下一篇:MySQL复习m1