目录
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):存放函数体(类成员函数和全局函数)的二进制代码和只读常量(如常量字符串)