C语言中的虚拟地址是什么?
生活随笔
收集整理的這篇文章主要介紹了
C语言中的虚拟地址是什么?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 背景
- 虛擬地址
背景
今天看RXW源碼的時候,看到了一個虛擬地址,我就很好奇,為什么要用虛擬地址呢?
在這里,buffer是一個MEDIA_BUFFER類型,而MEDIA_BUFFER是一個泛型指針
通過將這個泛型指針轉換為MEDIA_BUFFER_IMPLE結構體指針類型,BUFFER指針指向了一個結構體,這個結構體里void* ptr指針參數【作者稱之為虛擬地址】,這個參數指向的內存是否就是保存我們真實圖像內容的內存?
虛擬地址
那么為什么作者稱這個結構體里的void* ptr為緩存的虛擬地址呢?
因為在計算機里面,虛擬地址和物理地址的映射關系由操作系統(tǒng)決定,不是人為決定的,每個虛擬地址都能鏈接到真實的物理地址,通過使用虛擬地址,不同程序中也能有相同的(虛擬)地址,但是鏈接的卻是不同的物理地址,這讓它們不會相互影響對方所指向的內存。
此外還涉及到內存分頁機制的問題,
現代計算機都使用分頁(Paging)的方式對虛擬地址空間和物理地址空間進行分割和映射,以減小換入換出的粒度,提高程序運行效率。
具體可以自己慢慢去了解,,,我反正是看不怎么懂
參考文章1:c語言中的虛擬地址
參考文章2:c語言入門-內存分頁機制,完成虛擬地址的映射
總結
以上是生活随笔為你收集整理的C语言中的虚拟地址是什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++模板的概念<>(泛型编程)
- 下一篇: C语言结构体值复制与字符数组值复制的比较