为什么VS调试的时候,地址显示的是8位16进制数?

昵称是神马 2012-11-14 11:36:51
为什么VS调试的时候,变量地址显示的是8位16进制数?
这个是和操作系统有关系吗?还是编译器设置的?还是与这些都无关?


我在64位操作系统下尝试,变量地址也是8位16进制数,为什么64位操作系统下变量地址不是16位16进制数呢?


还有,为什么32位操作系统装8G内存没有什么用?


求指导~
...全文
1542 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
handsomerocco 2013-04-13
  • 打赏
  • 举报
回复
引用 16 楼 yujiefei0309 的回复:
引用 15 楼 rxin423355541 的回复:引用 13 楼 yujiefei0309 的回复:引用 12 楼 rxin423355541 的回复:vs默认32位,配置管理器里可以选择64位编译 在哪里设置啊,请详细一点 项目属性,配置管理器,活动解决方案平台,新建,选x64 顶!设置后果然调试时,变量的地址显示的是16位16进制数了;而且size……
兄弟你好,我这里是输出的地址是: 0x7fff68a5f7e4 sizeof(这个地址) 结果是8,为什么 0x7fff68a5f7e4 是12位数?
handsomerocco 2013-04-13
  • 打赏
  • 举报
回复
好贴,解决了我的问题。
昵称是神马 2012-11-18
  • 打赏
  • 举报
回复
引用 9 楼 anhuizhuanjiao 的回复:
引用 6 楼 yujiefei0309 的回复:引用 1 楼 anhuizhuanjiao 的回复:32位操作系统最大寻址数为2的32次方,也就是4G,超过4G,操作系统找不到了 2的32次方怎么对应4G啊? 2的10次方1kb,2的20次方1Mb,2的30次方1G,2的32次方4G
明白了,百科害人啊,说2的32次方后带的单位是bit,一直对不上4G,所以我一直在纠结。刚自己调试,一个地址值对应的是8bit,也就是1byte,这样2的32次方后带的单位应该是byte,一切也就圆满了。
昵称是神马 2012-11-16
  • 打赏
  • 举报
回复
哪些类型的sizeof是固定值呢?与编译选项无关的,我知道sizeof(char)永远是1.
yisikaipu 2012-11-16
  • 打赏
  • 举报
回复
引用 25 楼 yujiefei0309 的回复:
引用 24 楼 yisikaipu 的回复:引用 23 楼 yujiefei0309 的回复:哪些类型的sizeof是固定值呢?与编译选项无关的,我知道sizeof(char)永远是1. ISO/IEC 14882:2003(E) $5.3.3/1 ... sizeof(char), sizeof(signed char) and sizeof(unsigned ……
C++标准2003版的条款,2011版也一样
昵称是神马 2012-11-16
  • 打赏
  • 举报
回复
引用 24 楼 yisikaipu 的回复:
引用 23 楼 yujiefei0309 的回复:哪些类型的sizeof是固定值呢?与编译选项无关的,我知道sizeof(char)永远是1. ISO/IEC 14882:2003(E) $5.3.3/1 ... sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1; the resul……
这是哪里的啊?看不太明白,求解释~
yisikaipu 2012-11-16
  • 打赏
  • 举报
回复
引用 23 楼 yujiefei0309 的回复:
哪些类型的sizeof是固定值呢?与编译选项无关的,我知道sizeof(char)永远是1.
ISO/IEC 14882:2003(E) $5.3.3/1 ... sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1; the result of sizeof applied to any other fundamental type (3.9.1) is implementation-defined.
CrazyAsk 2012-11-15
  • 打赏
  • 举报
回复
sizeof 恩恩,有点印象
line_us 2012-11-15
  • 打赏
  • 举报
回复
好哦好,发现问题解决问题
mujiok2003 2012-11-14
  • 打赏
  • 举报
回复
引用 17 楼 yujiefei0309 的回复:
这也就是说sizeof一个指针变量,得到的值是与编译器设置有关的啊?
是的。跟你目标平台有关,在交叉编译的时候。
昵称是神马 2012-11-14
  • 打赏
  • 举报
回复
这也就是说sizeof一个指针变量,得到的值是与编译器设置有关的啊?
昵称是神马 2012-11-14
  • 打赏
  • 举报
回复
引用 15 楼 rxin423355541 的回复:
引用 13 楼 yujiefei0309 的回复:引用 12 楼 rxin423355541 的回复:vs默认32位,配置管理器里可以选择64位编译 在哪里设置啊,请详细一点 项目属性,配置管理器,活动解决方案平台,新建,选x64
顶!设置后果然调试时,变量的地址显示的是16位16进制数了;而且sizeof指针变量也是8了。谢谢啊
rxin423355541 2012-11-14
  • 打赏
  • 举报
回复
引用 13 楼 yujiefei0309 的回复:
引用 12 楼 rxin423355541 的回复:vs默认32位,配置管理器里可以选择64位编译 在哪里设置啊,请详细一点
项目属性,配置管理器,活动解决方案平台,新建,选x64
armsword 2012-11-14
  • 打赏
  • 举报
回复
引用 13 楼 yujiefei0309 的回复:
引用 12 楼 rxin423355541 的回复:vs默认32位,配置管理器里可以选择64位编译 在哪里设置啊,请详细一点
这个你百度下就有详细方法。
昵称是神马 2012-11-14
  • 打赏
  • 举报
回复
引用 12 楼 rxin423355541 的回复:
vs默认32位,配置管理器里可以选择64位编译
在哪里设置啊,请详细一点
rxin423355541 2012-11-14
  • 打赏
  • 举报
回复
vs默认32位,配置管理器里可以选择64位编译
昵称是神马 2012-11-14
  • 打赏
  • 举报
回复
引用 10 楼 armsword 的回复:
引用 7 楼 mujiok2003 的回复:VS好像没有64位版本,请确认。 VS现在没有专门的64版本,只有32的,但是支持64位开发。
要是VS支持64位了,调试时变量的地址是不是就要变成显示16位16进制数了啊?
armsword 2012-11-14
  • 打赏
  • 举报
回复
引用 7 楼 mujiok2003 的回复:
VS好像没有64位版本,请确认。
VS现在没有专门的64版本,只有32的,但是支持64位开发。
转角天边 2012-11-14
  • 打赏
  • 举报
回复
引用 6 楼 yujiefei0309 的回复:
引用 1 楼 anhuizhuanjiao 的回复:32位操作系统最大寻址数为2的32次方,也就是4G,超过4G,操作系统找不到了 2的32次方怎么对应4G啊?
2的10次方1kb,2的20次方1Mb,2的30次方1G,2的32次方4G
昵称是神马 2012-11-14
  • 打赏
  • 举报
回复
引用 7 楼 mujiok2003 的回复:
VS好像没有64位版本,请确认。
不好意思,没描述准确,应该说我用的是64位的操作系统,VS是多少位的不知道哦。
加载更多回复(9)

65,176

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧