1、ASSERT引起的BUG。
如,
Release版Search单路播放有问题。(是ASSERT断言导致。因为Release版会把ASSERT断言的表达式去掉,于
是"ASSERT(WaitSingleObject(...))"表达式被删除,导致程序没有等待播放器结束又开始播放。)
2、变量未初始化导致的BUG。
如,计算Stretch板卡视频帧时间时,有两个变量,
一个是:A,存储开始采集数据时的静态时间
一个是:B,存储开始采集数据时的相对时间
当识别到A等于0时,则会去获取当前系统时间,赋给A。
如果A没被初始化为0,则系统一直以A为参考时间(实际上A只是一个迷途时间),这肯定是错的。
3、初始化失当导致的BUG。
如,构造函数()
{
变量1;
变量2;
}
Debug版下,以上代码等效于,
构造函数()
{
变量1=0;
变量2=0;
}
Release版下把变量通通杀掉。
4、越界读导致的BUG。
有时程序越界多读了几个字节,在Debug下可能不会有问题,因为Debug版程序会
在被分配的内存后面加上“尾巴”。但是Release版下就会导致问题。