1. 内存与地址

我们都见过像这样挂在墙上的很多个邮箱,每个邮箱有一个房间编号。

图 17.1. 邮箱的地址

邮箱的地址

使用时根据房间编号找到相应的邮箱,然后投入信件或取出信件。内存与此类似,每个存储单元有一个地址(Address),CPU通过地址找到相应的存储单元,取其中的指令,或者读写其中的数据。与邮箱不同的是,一个地址所对应的存储单元不能存很多东西,只能存一个字节,所以以前讲过的intfloat等多字节的数据类型保存在内存中要占用多个地址,这种情况下把起始地址当作这个数据的地址。

内存地址是从0开始编号的整数,最大编到多少取决于CPU的地址空间(Address Space)有多大。目前主流的处理器是32位或64位的,本书主要以32位的x86平台为例,所谓32位就是指地址是32位的,从0x0000 0000到0xffff ffff。