当前位置: 首页 > 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.mrgr.cn/news/44816.html

相关文章:

  • 微服务概述
  • leetcode 刷题day36动态规划Part05 背包问题(完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ、70. 爬楼梯 (进阶))
  • 笔试题总结
  • 第十三篇——虚数:虚构这个工具有什么用?
  • 编码器计速及测速(理论+代码)√
  • ECCV 2024 超分辨率(super-resolution)方向上接收论文总结
  • 【FPGA】面试八股
  • 69.x的平方根 367.完全有效的平方数
  • 石岩上屋大道看到一辆贴了很多条子的车
  • 周记-2024年第40周9.30~10.6:无聊时刻就看书
  • 助动词的分类及其缩略形式
  • 大厂面试真题:阿里经典双重检测DCL对象半初始化问题
  • 如何判断一个无向图是不是欧拉图
  • OJ在线评测系统 微服务高级 网关跨域权限校验 集中解决跨域问题 拓展 JWT校验和实现接口限流降级
  • 继电器原理及应用
  • 【艾思科蓝】Java Web开发实战:从零到一构建动态网站
  • 【网络协议大花园】应用层 http协议的使用小技巧,用好了都不用加班,效率翻两倍(上篇)
  • UE5+ChatGPT实现3D AI虚拟人综合实战
  • Mysql(五) --- 数据库设计
  • 手把手带你服务端实现支付功能的通用解决方案!(全网最新)