关于指针类型占用的字节数
2013-08-06 20:16
393 查看
如果CPU是32位,内存是CPU能够直接访问的区域,CPU每次处理的数据也是32位,那CPU能够直接访问的内存大小就是2的32次方,也就是4GB,所以一般我们实用的台式机大多数的内存上线都是4GB.
一个地址是32位,任何指针都是一个地址,所以就是占用4byte(32位),在不同的硬件平台上,指针变量占用的内存大小与其地址值的范围大小成正比。
但是实际上我们在window下利用VC或者VS编译器写代码时,有可能会出现这样的情况:比如我们的CPU硬件是64位的,操作系统也是64位的,但是由于vs建立的工程用的是win32,对应于32位的编译器,则所用到的指针类型实际上还是4个字节,即为32位;如果将VS工程配置为win64,则可以得到占用8个字节的指针,这个是可以试验测试的。
拓展内容:关于扩展内存条,目前一般的计算机CPU都是64位的,而计算机的内存是由操作系统来管理的,因此可以扩展内存条的最大宽度决定于计算机操作系统的位数,例如:一台CPU为64位的计算机上,安装了一个XP系统(32位),则可以扩展的最大的内存空间就是2的32次方,也就是4GB(实际上,真正可以访问的内存应该比这个小,也就3点几个G)。
如何查看计算机CPU的位数和操作系统的位数。在cmd命令窗口内输入systemInfo,如此就可以查看如下窗口:特别注意下“系统类型”、“处理器”分别对应了计算机操作系统和处理器CPU的位数,其中X86说明是32位的,X64说明是64位的。
(额额额,好桑心,传了半天图片总是显示不鸟)
一个地址是32位,任何指针都是一个地址,所以就是占用4byte(32位),在不同的硬件平台上,指针变量占用的内存大小与其地址值的范围大小成正比。
但是实际上我们在window下利用VC或者VS编译器写代码时,有可能会出现这样的情况:比如我们的CPU硬件是64位的,操作系统也是64位的,但是由于vs建立的工程用的是win32,对应于32位的编译器,则所用到的指针类型实际上还是4个字节,即为32位;如果将VS工程配置为win64,则可以得到占用8个字节的指针,这个是可以试验测试的。
拓展内容:关于扩展内存条,目前一般的计算机CPU都是64位的,而计算机的内存是由操作系统来管理的,因此可以扩展内存条的最大宽度决定于计算机操作系统的位数,例如:一台CPU为64位的计算机上,安装了一个XP系统(32位),则可以扩展的最大的内存空间就是2的32次方,也就是4GB(实际上,真正可以访问的内存应该比这个小,也就3点几个G)。
如何查看计算机CPU的位数和操作系统的位数。在cmd命令窗口内输入systemInfo,如此就可以查看如下窗口:特别注意下“系统类型”、“处理器”分别对应了计算机操作系统和处理器CPU的位数,其中X86说明是32位的,X64说明是64位的。
(额额额,好桑心,传了半天图片总是显示不鸟)
相关文章推荐
- C++ 基本语法之变量(指针)与数据类型(占用字节大小)
- Java中boolean类型到底占用多少个字节?
- 关于内存和指针操作,数据类型转换本质的理解
- sizeof()函数求类型所占字节大小-指针,数组
- Java中boolean数据类型占用多少个字节
- 输出各种基本类型所占用的字节长度
- 关于C++指针类型所占大小的测试
- 关于用Hibernate执行sql查询,字符字段类型只返回第一个字节的问题
- Java基本数据类型占用字节和范围
- 你真的知道Java中boolean类型占用多少个字节吗?
- [转] c# 数据类型占用的字节数
- 关于cout输出类型是指针的总结和区别
- 八种基本数据类型占用字节空间总结
- int类型以及指针的类型所占字节的大小,到底是由什么决定的?
- 关于的数据类型的取值范围和所占字节数
- 一个简单的数据类型判断:占用不同大小字节的变量比较
- 关于指针类型转换的一个有趣实验
- 关于空指针类型的类变量的成员函数访问的问题
- 关于void*类型指针的一些测试
- Java基本类型占用的字节数(char占用几个字节问题)