文章目录

  • 背景
  • 虚拟地址

背景

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

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

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

虚拟地址

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

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

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

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

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

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

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

C语言中的虚拟地址是什么?相关推荐

  1. Go 知识点(19)— Go 语言中的野指针

    野指针是一种指向内存位置是不可知的指针,一般是由于指针变量在声明时没有初始化所导致的.在 Go语言中,布尔类型的零值为 false,数值类型的零值为 0,字符串类型的零值为 "", ...

  2. c语言中字符串数组的地址存放以及%s输出单个字符导致程序崩溃的问题

    代码 总结下c语言中字符串数组的地址存放问题 #include <iostream> using namespace std; #include<bits/stdc++.h>i ...

  3. 单片机c语言中的循环语句,单片机c语言教程:C51循环语句

    循环语句是几乎每个程序都会用到的,它的作用就是用来实现需要反复进行多次的操 作.如一个 12M 的 51 芯片应用电路中要求实现 1 毫秒的延时,那么就要执行 1000 次空语句 才能达到延时的目的( ...

  4. python调用什么函数实现对文件内容的读取_如何使用python语言中的方法对文件进行读写操作...

    在我们使用python语言中的文件时,可以使用open()方法打开文件,close()方法关闭文件,read()方法读取文件内容,write()方法写入内容到文件中.下面利用几个实例说明文件读写方法, ...

  5. 如何用C语言改变宏定义的大小,C语言中宏定义使用的小细节

    C语言中宏定义使用的小细节 #pragma#pragma 预处理指令详解 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#p ...

  6. C语言中的指针和内存泄漏

    对于任何使用 C 语言的人,如果问他们 C 语言的最大烦恼是什么,其中许多人可能会回答说是指针和内存泄漏.这些的确是消耗了开发人员大多数调试时间的事项.指针和内存泄漏对某些开发人员来说似乎令人畏惧,但 ...

  7. C语言中连续调用rand函数,返回值不变

    C语言中连续调用rand函数,返回值不变 最近用C语言随机函数编程发现了一个奇怪的现象: 简易版代码: #include<stdio.h> #include<stdlib.h> ...

  8. (mfc)将字符串中的字符逐个按行输出_C语言中字符串输入输出

    在C语言中没有字符串类型,用字符数组处理字符串 定义 字符数组定义:char 数组名 [常量表达式][常量表达式] 一维字符数组,用于存储和处理一个字符串 . 二维字符数组,用于同时存储和处理多个字符 ...

  9. c语言中的普通字符包括什么,【判断题】C语言中的字符常量通常有两种形式:普通字符和转义字符。...

    [判断题]C语言中的字符常量通常有两种形式:普通字符和转义字符. 更多相关问题 ---Can you speak French?---Yes, but only____.A.a littleB.lit ...

最新文章

  1. 家庭背景音乐的发展趋势
  2. adding oracle jvm 慢,java – 什么JVM优化导致这些性能结果?
  3. P2831 愤怒的小鸟
  4. shell和linux的认识
  5. poj 3090 amp;amp; poj 2478(法雷级数,欧拉函数)
  6. ups容量计算和配置方法_UPS电路设计的空开、电缆及电池如何配置,计算依据是什么...
  7. javascript学习随笔(编写浏览器脚本 Navigator Scripting )
  8. Java多态向上转型作用,热度飙升!
  9. LeetCode-Minimum Path Sum[dp]
  10. 每日学习打卡-汇总处
  11. 犯了这15个错误,你可能会上征信“黑名单”
  12. C语言实现任何文件的加密解密
  13. 金蝶k3专业版找不到加密服务器,金蝶kis专业版加密服务器开启显示“未检测到加密狗或已经达到最大站点数,并且该账套已使用超过三个月...
  14. Redis中的keys和Hkeys的区别
  15. 开发润乾报表过程:因为内容过多分页导致的这条线
  16. ANSYS APDL学习(3):ANSYS APDL 导入x_t格式模型并受力分析范例
  17. 拉普拉斯-Laplacian
  18. 【学习笔记之程序员】笔记
  19. hadoop基础----hadoop实战(七)-----hadoop管理工具---使用Cloudera Manager安装Hadoop---Cloudera Manager和CDH5.8离线安装
  20. 帝国php调用文章列表,帝国CMS模板中:使用php调用最新文章的代码(非灵动和万能标签)...

热门文章

  1. [转载] 羽毛球——学打羽毛球 09 步法的基本概念
  2. C# 枚举在项目中的应用总结
  3. 【整理】ABAP快捷启动Debug三种方式
  4. 【测试】SAP 委外加工收货BAPI Demo
  5. SAP报表开发工具 Report Painter
  6. 定义定价用途的条件类型(Condition Types)
  7. ME22N PO删除控制
  8. SAP调用外部web service
  9. 初级ABAPer考题
  10. 带你认识SAP反记账