火山PC内存和指针基础知识讲解
本文作者:灰羊羊
一、内存和外存
本文来介绍一下内存,内存内存,顾名思义是计算机的内部存储,那么有没有外部存储?
自然是有的,外存就是硬盘磁盘之类的,外存最显著的作用是可以长时间的存储数据,将数据保存在硬盘上,关闭电脑数据不会丢失
至于本文的重点是内存,熟悉电脑硬件的都知道,主板上有个内存条,一般常见的内存条有4G,8G,16G等等,而一个硬盘存储容量有
1T(100G),或者更多
那么为什么内存和外存的容量会有这么大的区别?
二、CPU和内存容量
首先,内存是CPU存放处理数据的仓库,如果没有内存,CPU本身的容量大概只有10MB左右,CPU在工作时,需要先将外存的数据读取到内存之中,然后才能进行进一步的工作
这时候,问题就来了,一个CPU可以把多少数据存到内存中?拿32位系统来说,假设地址总线为32,32位操作系统支持的内存是2的32次方byte,也就是4294967296 这个单位是b
根据b,kb,mb,GB的换算公式,可以计算出这个数值是4G,64位操作系统理论上的寻址空间为2的64次方bit,转化单位为GB,那也就是2147483648GB
以上只是理论数据,具体还要看其他影响
三、内存和外存应用举例
我们打开火山平台,新建个项目,写好代码,在未保存前,我们所有的数据都在内存中保留,只有我们保存之后,这些数据才会被写入外存(硬盘)中转为长时间保存的文件
四、内存存储介绍
上面已经说过了,计算机的内存是一块用于存储数据的空间,并且数据在内存中以二进制形式存储,像下面这样,一个bit就是一个高低电平,可以理解为0和1
相信您对内存地址并不陌生,那么下面来看看内存地址是怎么来的
单个的1bit,对我们来说,并没有大的用处,所以,我们将8个bit捆绑在一起形成一个字节(byte),同时对每个byte进行编号,这就形成了地址,同时也要保证,地址不能重复,地址编号以16进制来记录
五、变量在内存中存储
来看看一个int型(整数)的变量是怎么存放在内存中的,首先,您需要知道一个整数的二进制补码是多少
比如说,定义一个变量为 a=5789
5789的二进制数据为0001 0110 1001 1101,这里通过微软自带的计算器程序员模式就可以计算出来
二进制数据在内存中以补码的形式存放
十进制数5789的二进制补码为补码是0001 0110 1001 1101,至于什么是补码,您可以百度,或者是用计算器算一下
下面附一张计算器的图,这里不对补码做介绍
上面5789的二进制补码占到了16位,所以,需要两字节的空间存储
而int数据是四字节,所以,没有用到的位在前面补0既可以了,结果是
0000 0000 0000 0000 0001 0110 1001 1101 前面补了16个0,这加起来,就是32bit,四字节
将数据放在内存中,先这样子看,一个字节可以存8bit,按下图放入数据,这个变量a的地址是0X01,存放数据的首地址为变量的地址
可以理解为,0X01到0X04都是变量a的,但是用0X01来表示变量a的地址
您可以看一下,这样子,前面的2字节是0,把高字节位放在了低地址上
将低字节放在了高地址位,这样子,您这个变量会这样子显示,计算方式是将8位二进制数据转化成十六进制
地址:0X01 00 00 16 9D
您见过以字节为0开头的数据吗,并没有
所以,我们将数据位置翻转一下,存放在内存中,这叫做大小端,内存中的数据均需要进行大小端的转化
经过转化的地址为:0X01 9D 16 00 00
注意:上图例子中,变量a的首地址是0X01,所以,使用取变量地址,取出来的结果是0X01而不是其他值
然后呢,我们在火山中创建这个变量,然后看一下地址数据,这里,字节集数据是不是和上面的一致呢
以上就是内存的基础知识,下面让我们一起来学习指针和指针偏移
总结:数据存储在内存中(不是永久保存,临时的),存储的时候,以二进制的补码形式,然后经过大小端(位置翻转)变化后,存储
今天的文章火山内存占用越来越大怎么办呀_复位后的程序指针pc指向[通俗易懂]分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/85163.html