热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

指针大小与32位、64位系统

某天写程序时输出了sizeof()某整型指针,结果发现居然不是4,非常惊讶,如下:下面就来解释一下为什么:无论内存地址还是其他数据,在运算时都需要保存在寄存器之中,而结果是8,说明

某天写程序时输出了 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 次方。



推荐阅读
author-avatar
hadley朱_469
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有