读书人

关于指针相减的疑义

发布时间: 2013-10-11 14:52:39 作者: rapoo

关于指针相减的疑问

vc的编译器

两个char*型指针相减
在发布版中能得到正确值,调试版中会返回一个非常大的值

842203260

发布版中打印出来的是124

不解中
[解决办法]
应该是代码中的bug吧!可能是指针飞了!
单步调试吧!
[解决办法]
抱歉,你这信息给予太少了。
需要在调试版中打LOG或者调试才能得到正确的解答。

指针飞了? 内存被写了。野指针? 基指针未对齐,都有可能的。。
[解决办法]
可以把部分代码或者关键性的代码贴出来,这样我们可以就代码做出判断。
[解决办法]
贴点代码出来吧,你所谓的指针相减是地址相减还是指针所指的值相减?

另外调试版本和发布版本的内存排布是不一样的,调试版本会有很多调试信息在里边所以exe会比较大,发布版本会有一定的优化,exe会小很多,你可以自己观察一下
[解决办法]
是程序 的bug,感觉也不像翻转了,
842203260 = 0x3233007C,0x7C = 124,也就是低位是正确的。但是高位的那些3233值就可能是你内存被改写了,也就是存储指针的栈内存被改了一部分。最好跟一下就行了。

读书人网 >C++

热点推荐