BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #47901同步于 2010/12/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

vs2005下c++一个诡异的问题 (已搞定)

oscar
2010/12/17镜像同步12 回复
问题是: main() { char test1[12]; memset(test1,2,12); cout<<hex<<(int)test1; } 输出为0x0012ff70。 内存中查看的不一样啊。相差了四字节。 解决方案: 这是vs2005 release下的调试的结果。 输出是0x0012ff70,图中地址是0x0012ff6c,两者相差4, 所以输出结果和图中结果是一致的。 至于为什么不一样,不是你输入地址有问题就是IDE字节对齐了怎么着。 要么在debug下调试,要么如果想在release模式下面的调试的话,给关闭项目属性-》C/C++ -》优化 里面的选项,把02给禁用了。 谢谢hs大牛。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
PeterKing机器人#1 · 2010/12/17
【 在 oscar 的大作中提到: 】 : main() : { : char test1[12]; : ................... 不懂 ,诡异在哪里
oscar机器人#2 · 2010/12/17
【 在 PeterKing 的大作中提到: 】 : : main() : : { : : char test1[12]; : ................... 你看看。。。
hs机器人#3 · 2010/12/17
调试上面程序,没有发现问题,从楼主的情况来看,应该是用的release版本调试的吧,O2优化之后的了,连memset都不对了,请用debug版本调试
oscar机器人#4 · 2010/12/17
【 在 hs 的大作中提到: 】 : 调试上面程序,没有发现问题,从楼主的情况来看,应该是用的release版本调试的吧,O2优化之后的了,连memset都不对了,请用debug版本调试 : -- 恩。谢谢大牛。 dedug下有用。 那我要在release下编译 那怎么办呢
oscar机器人#5 · 2010/12/17
【 在 hs 的大作中提到: 】 : 调试上面程序,没有发现问题,从楼主的情况来看,应该是用的release版本调试的吧,O2优化之后的了,连memset都不对了,请用debug版本调试 : -- debug下能够运行,运行结果如下,但是这个界面关不了。。。 强制都管不了了。。。
hs机器人#6 · 2010/12/17
【 在 oscar 的大作中提到: 】 : : 调试上面程序,没有发现问题,从楼主的情况来看,应该是用的release版本调试的吧,O2优化之后的了,连memset都不对了,请用debug版本调试 : : -- : 恩。谢谢大牛。 dedug下有用。 那我要在release下编译 那怎么办呢 : ................... 。。。。。release下发布给别人用可以理解,但是为什么非要用release调试呢?这个需求很诡异。 另外,回答你的问题,如果想在release模式下面的调试的话,给关闭项目属性-》C/C++ -》优化 里面的选项,把02给禁用了。
hs机器人#7 · 2010/12/17
【 在 oscar 的大作中提到: 】 : : 调试上面程序,没有发现问题,从楼主的情况来看,应该是用的release版本调试的吧,O2优化之后的了,连memset都不对了,请用debug版本调试 : : -- : debug下能够运行,运行结果如下,但是这个界面关不了。。。 强制都管不了了。。。 : ................... 我情何以堪,这个是不是因为你加了断点,停在了这里,F5继续调试,或者是shift+ F5停止调试。
PeterKing机器人#8 · 2010/12/17
【 在 oscar 的大作中提到: 】 : : : main() : : : { : : : char test1[12]; : ................... 刚才上来时没看见图 所以问了句诡异在哪里
PeterKing机器人#9 · 2010/12/17
【 在 oscar 的大作中提到: 】 : main() : { : char test1[12]; : ................... 求教,这个内存查看是用的什么工具