据我所知C++指向0地址,那么0地址具体的内容又是什么呢?另外附带问下,我们所说的32位和64位具体指的是什么?是寄存器的位数吗?
3 回答
慕码人8056858
TA贡献1803条经验 获得超6个赞
有两个常见的谬误,我解释下,你在c++也好,java也好,使用的地址,是逻辑地址,而不是内存的物理地址。
换一句话说,两个程序,都有一个叫1234的地址,它们其实是对应物理内存上两个完全不同的地方。
另一个误解是,内存地址空间和内存是不同的。因为一些外设、rom等等,也会使用内存地址,但是它们不是内存。
比如说,1234这个地址,可能对应的是计算机rom存储器(也就是bios系统)的一个地址,那么它显然就是只读的,而且显然不是内存。
类似地,显卡、dma方式存取的硬盘,等等也有各自的地址,这些地址显然也不是内存。
喵喔喔
TA贡献1735条经验 获得超5个赞
0地址就是内存地址的起始位置,当然,这个地址一般是系统boot启动的地址,这个地址是受保护的,不允许应该程序访问的,如果不小心访问到这个
地址,系统就会抛出一个异常,32位和64位就是系统寻址时内存地址的位数,这个也是等于寻址寄存器的位数,比如32位地址表示例如:0x12345678,
如果是64位,那么地址就是0x0000000012345678,主要还是内存地址占用位数不同。
- 3 回答
- 0 关注
- 652 浏览
添加回答
举报
0/150
提交
取消