后来进行了跟踪调试,以外的发现assert(oneFunction())这句竟然在RELEASE模式下面不执行。哦,我当时使用这个assert是为了断言一个函数的返回值为正,而这个函数正好要影响我的数据。当然assert在DEBUG模式下面没有问题,正常的编译运行成功。但在RELEASE模式下面一旦调试到这个assert的上一行,在进行单步跟踪的时候就跳到了assert的下一行。也就是说这个函数根本没有运行。原因就出现在这里。把assert去掉以后,函数就正常运行了。
以后用assert要多加小心了,assert函数返回值的时候也一定要把返回值先赋值给一个变量,再assert,就不会出现这样的问题了。
文章来源:http://www.hesicong.net/pjblog/default.asp?id=294