非科班一直对内存地址和空间高的不是很清楚。今天仔细地搜了一下,记录一下自己的思维误区,以及如何区分内存空间和内存地址。
我存在的误区:
❌32位的机器虚拟地址是由一个32位的二进制数来表示的。计算机又是按字节寻址的,那么是不是相邻存储元素之间低八位(一字节)是相同的,而在第九位上有所不同。
这种想法主要是我没有搞清楚内存地址和地址空间这两个关系。实际上内存地址和地址空间是两个没什么关系的概念。
✔虚拟内存实际上就可以想象成一个数组,而这个内存地址就是用来寻址的index,在每一个内存地址标记的位置上可以存放一字节大小(8bits)的数据,这里的8bits和内存地址的32bits没有任何关系。内存空间内不存放你这个内存地址,单纯存放的是数据。所以连续的相邻一字节元素之间内存地址的差值是1。