1. 内存与地址的基础概念
1.1 内存单元的物理结构
计算机内存本质上是一个巨大的电子存储阵列,由数十亿个微型存储单元构成。每个存储单元就像宿舍楼里的一个房间,而内存地址则是这个房间的门牌号码。现代计算机体系结构中,最小的可寻址单元通常是1个字节(Byte),相当于一个8人间宿舍,每个床位代表1个比特位(bit)。
内存编址的精细程度决定了系统的寻址能力。以常见的x86架构为例:
- 32位系统可寻址2^32=4,294,967,296个内存单元(约4GB)
- 64位系统则可管理2^64=18,446,744,073,709,551,616个单元(理论16EB)
关键细节:虽然内存按字节编址,但CPU通常以缓存行(Cache Line)为单位读取数据,现代处理器缓存行大小多为64字节。这意味着即使只读取1个字节,实际会加载相邻的64字节数据。
1.2 地址总线的硬件实现
地址总线是CPU与内存通信的物理通道,其宽度直接决定了系统的寻址能力:
| 总线宽度 | 最大寻址空间 | 典型系统 |
|---|---|---|
| 16位 | 64KB | 早期PC |
| 20位 | 1MB | 8086 |
| 32位 | 4GB | 现代32位系统 |
| 48位 | 256TB | x86-64实际实现 |
| 64位 | 16EB | x86-64理论值 |
硬件编址通过电子信号实现:当CPU需要读取0x12345678地址的数据时,会在地址总线上输出二进制值00010010001101000101011001111000,内存控制器根据这个电信号定位到具体存储单元。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 指针的本质与操作
2.1 变量与内存的映射关系
当声明int a = 10;时,内存中发生以下事件:
- 编译器分配4个连续字节(假设地址0x006FFD70-0x006FFD73)
- 将十进制10转换为二进制00001010(假设小端存储):
- 0x006FFD70: 0x0A
- 0x006FFD71: 0x00
- 0x006FFD72:
