指针大小与32位、64位系统
某天写程序时输出了 sizeof() 某整型指针,结果发现居然不是 4,非常惊讶,如下:
下面就来解释一下为什么:
无论内存地址还是其他数据,在运算时都需要保存在寄存器之中,而结果是 8,说明了寄存器的大小是 8 个字节,即 64 bit。
我们经常说32位系统或者64位系统,实际上说的是 CPU 一次处理数据的能力。
我们可以将其理解为整个数据通路包括寄存器、处理器、总线等等都是 32 或 64 位(虽然不全是这样)。
64位计算机架构一般具有 64 位宽的整数型寄存器,而只有整数寄存器(integer register)才可存放指针值(内存数据的地址),因此指针的大小就自然是 8 个字节了。
在 32 位系统中,地址的大小是 32 bit,因此其最大寻址空间为 pow(2, 32) = 4GB,也即 32 位系统可以支持的最大内存为 4GB;而在 64 位系统中,其最大寻址空间为 2 的 64 次方。
分类:
操作系统
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!