最近解决的几个死机故障,基本上都是不符合编码规范导致的。可能有以下几个原因导致的:
1)原有代码不符合规范,导致现在修改一不小心就导致异常(最近的两个野指针异常)。
2)新进入项目的队友对业务不熟悉,没有完全按照规范要求自己。(那个COM对象空指针问题)
3)对一些库中的结构体了解不够深入,VARIANT类型没有初始化(VariantInit),但用VariantClear释放导致的异常。
这个故障的原因是:因为类中的一个成员是VARIANT类型,没有用VariantInit初始化,则此成员变量VARIANT的类型是随机的(应该是当时内存中的类型),但释放的时候用VariantClear,如果是类型为数组、字符串、指针可能就会异常。
这些问题查是很费时间和精力的,看样子编码是严格按照编码规范是非常有意义的。(单元测试应该加入,但对于这个产品已经不太现实了)