为了账号安全,请及时绑定邮箱和手机立即绑定

Java和C++中的null真实指向哪里,毕竟null指针也是占用了一定字节的内存地址的?

Java和C++中的null真实指向哪里,毕竟null指针也是占用了一定字节的内存地址的?

Helenr 2018-07-09 19:19:58
据我所知C++指向0地址,那么0地址具体的内容又是什么呢?另外附带问下,我们所说的32位和64位具体指的是什么?是寄存器的位数吗?
查看完整描述

3 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

有两个常见的谬误,我解释下,你在c++也好,java也好,使用的地址,是逻辑地址,而不是内存的物理地址。
换一句话说,两个程序,都有一个叫1234的地址,它们其实是对应物理内存上两个完全不同的地方。

另一个误解是,内存地址空间和内存是不同的。因为一些外设、rom等等,也会使用内存地址,但是它们不是内存。
比如说,1234这个地址,可能对应的是计算机rom存储器(也就是bios系统)的一个地址,那么它显然就是只读的,而且显然不是内存。
类似地,显卡、dma方式存取的硬盘,等等也有各自的地址,这些地址显然也不是内存。


查看完整回答
反对 回复 2018-07-13
?
喵喔喔

TA贡献1735条经验 获得超5个赞

0地址就是内存地址的起始位置,当然,这个地址一般是系统boot启动的地址,这个地址是受保护的,不允许应该程序访问的,如果不小心访问到这个
地址,系统就会抛出一个异常,32位和64位就是系统寻址时内存地址的位数,这个也是等于寻址寄存器的位数,比如32位地址表示例如:0x12345678,
如果是64位,那么地址就是0x0000000012345678,主要还是内存地址占用位数不同。

查看完整回答
反对 回复 2018-07-13
  • 3 回答
  • 0 关注
  • 620 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信