指针一定是4个字节吗

 我来答
CodeBlove
2018-04-11 · TA获得超过3364个赞
知道小有建树答主
回答量:936
采纳率:79%
帮助的人:247万
展开全部
由CPU地址总线宽度、系统页面地址空间和编译器决定的。如果CPU允许的情况下,编译器在编译64位程序时也可以按照CPU最大64位宽度进行寻址,那么由这个编译器编译的程序就是64位(8字节)。但是你必须明白一个重点,系统寻址不是直接按物理地址访问内存的,而是通过"拼接”的(段地址+逻辑地址),拼接后的地址提交给物理层以便提取数据,这是由于历史原因造成的,而逻辑地址在Windows中叫做分页,当然Windows可能内部也不是完全等效于逻辑地址。
因而大多数编译器目前来说逻辑地址都是32位的,一个是由于历史原因及为了兼容性,还有个因素:地址宽度决定了地址空间大小,32位可以寻址4G空间,对于大部分程序来说,4G逻辑地址的空间足够了。同时也方便地址管理及映射,太小了一个进程可能需要分配多个内存页不方便(一个程序内部要来回切换页面,会增加管理开销),对于运行一个小程序,太大的地址空间浪费内存,因此32位是个非常合适位宽,既方便各种CPU一次寻址,又兼顾内存分配方案(和磁盘扇区大小的决策类似)。
以上描述内存分配的有些地方不一定完全符合事实,但是我只是为了方便描述PC机的地址寻址机制:段地址+逻辑地址=物理地址。
cdyzxy
2018-04-11 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3766万
展开全部
这与操作系统有关,一般来说32位操作系统指针是4字节的
还与指针类型有关,near型、far型、huge型等
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式