返回信息流问题是:
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大牛。
这是一条镜像帖。来源:北邮人论坛 / cpp / #47901同步于 2010/12/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
vs2005下c++一个诡异的问题 (已搞定)
oscar
2010/12/17镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 oscar 的大作中提到: 】
: main()
: {
: char test1[12];
: ...................
不懂 ,诡异在哪里
【 在 PeterKing 的大作中提到: 】
: : main()
: : {
: : char test1[12];
: ...................
你看看。。。
【 在 hs 的大作中提到: 】
: 调试上面程序,没有发现问题,从楼主的情况来看,应该是用的release版本调试的吧,O2优化之后的了,连memset都不对了,请用debug版本调试
: --
恩。谢谢大牛。 dedug下有用。 那我要在release下编译 那怎么办呢
【 在 hs 的大作中提到: 】
: 调试上面程序,没有发现问题,从楼主的情况来看,应该是用的release版本调试的吧,O2优化之后的了,连memset都不对了,请用debug版本调试
: --
debug下能够运行,运行结果如下,但是这个界面关不了。。。 强制都管不了了。。。
【 在 oscar 的大作中提到: 】
: : 调试上面程序,没有发现问题,从楼主的情况来看,应该是用的release版本调试的吧,O2优化之后的了,连memset都不对了,请用debug版本调试
: : --
: 恩。谢谢大牛。 dedug下有用。 那我要在release下编译 那怎么办呢
: ...................
。。。。。release下发布给别人用可以理解,但是为什么非要用release调试呢?这个需求很诡异。
另外,回答你的问题,如果想在release模式下面的调试的话,给关闭项目属性-》C/C++ -》优化 里面的选项,把02给禁用了。
【 在 oscar 的大作中提到: 】
: : 调试上面程序,没有发现问题,从楼主的情况来看,应该是用的release版本调试的吧,O2优化之后的了,连memset都不对了,请用debug版本调试
: : --
: debug下能够运行,运行结果如下,但是这个界面关不了。。。 强制都管不了了。。。
: ...................
我情何以堪,这个是不是因为你加了断点,停在了这里,F5继续调试,或者是shift+ F5停止调试。
【 在 oscar 的大作中提到: 】
: : : main()
: : : {
: : : char test1[12];
: ...................
刚才上来时没看见图 所以问了句诡异在哪里
【 在 oscar 的大作中提到: 】
: main()
: {
: char test1[12];
: ...................
求教,这个内存查看是用的什么工具