当前位置: 首页 > news >正文

73.【C语言】C/C++的内存区域划分

目录

1.内存里的几个区域

2.示意图

3.解释


1.内存里的几个区域

除了耳熟能详的栈区,堆区,静态区,还有内核空间,内存映射段,数据段,代码段

2.示意图

3.解释

栈区(stack area):局部变量,函数参数,返回数据,返回地址

内存映射段:将文件映射到内存

映射的含义:

如果看过李忠老师的 《x86汇编语言 从实模式到保护模式 第二版》,其中写到了可以操作B800:0000~BFFF:000F的虚拟地址来向80*25的显示屏写入可视的文字

可以这样做的原因是:

(以下摘抄自P67~P68)

      为了给出要显示的字符,处理器需要访问显存,把字符的ASCI码写进去。但是,显存是位于显卡上的,访问显存需要和显卡这个外围设备打交道。同时,多一道手续自然是不好的,这当中最重要的考量是速度和效率。想想看,你让人传话给父母,和自己亲自往家里打电话,花费的时间是不一样的。为了实现一些快速的游戏动画效果,或者播放高码率的电影,不直接访问显在是办不到的。

      为此,计算机系统的设计者们,这些敢想敢干的人,决定把显存映射到处理器可以直接访问的地址空间里,也就是内存空间里

--------------------------------------------------------------------------------------------------------------------------

处理器-->显卡-->显存变成处理器-->内存(含映射的显存)

堆区(heap area):动态内存管理(malloc函数,realloc函数,calloc函数,free函数)

数据段(data  segment)(静态区):全局变量(如全局变量),静态数据(如静态变量(由static修饰))

代码段(code segment):存放函数体(类成员函数和全局函数)的二进制代码和只读常量(如常量字符串)

http://www.lryc.cn/news/455389.html

相关文章:

  • k8s 中存储之 hostPath 卷
  • Cherno游戏引擎笔记(73~90)
  • helm 测试卸载或删除(redis)
  • 关于Qt音乐播放器进度条拖拽无用的问题解决方案
  • Redis:初识Redis
  • 【React】增量传输与渲染
  • 【回眸】Tessy 单元测试软件使用指南(四)常见报错及解决方案与批量初始化的经验
  • 2024 - 10 :生物药学: 如何获取对应核心靶点基因的激酶
  • STM32 HAL库UART查询方式实例
  • 数据结构--线性表双向链表的实现
  • 第一个Flutter应用(一)
  • 批量查询快递单号物流信息:高效掌握最后更新动态
  • 随着硬件水平的提升,LabVIEW有哪些过去的编程方法被淘汰掉了
  • Leetcode 206.反转链表
  • 基于springboot和vue.js 养老院管理系统设计与实现
  • 高效数据处理:MapReduce与Hive的实战应用
  • 【含开题报告+文档+PPT+源码】基于springboot的迎新系统
  • C#-委托delegate
  • 编译Thingsboard3.7.0的过程记录
  • vulnhub-THE PLANETS-EARTH靶机
  • 【C语言】分支和循环(2)
  • Python数据分析-远程办公与心理健康分析
  • LabVIEW提高开发效率技巧----使用动态事件
  • 【STM32开发之寄存器版】(五)-窗口看门狗WWDG
  • Leetcode203.移除链表元素-Python
  • 属性拷贝MapStruct
  • Chromium 添加书签功能浅析c++
  • Spring Cloud Netflix Ribbon 负载均衡详解和案例示范
  • Armeria gPRC 高级特性 - 装饰器、无框架请求、阻塞处理器、Nacos集成、负载均衡、rpc异常处理、文档服务......
  • 如何制作一个企业网站,建设网站的基本步骤有哪些?