记录一下一个很坑的问题:qt编译程序,打包了debug版和release版。然后在自己电脑上运行功能都是正常跑,但是呢,丢到另一台电脑,同样的某个功能发现debug版正常运行,而release版该功能异常崩溃。
检查多次,比如可能影响的原因:少带了文件,相关库文件版本不同,或者是不同电脑环境变量不同。结果发现都不是造成该问题的原因。
有人说可能是release版和debug版,对于一些指针未初始化的容忍程度不同。可能一个指针变量没初始化,在debug环境能够正常过,但在release下就不行。但是因为改动的代码距离上个版本相差太多,本人也不确定是否是这个原因,并且也没有其他好的方法去定位问题出在何处。一时间不知道该咋办。
后面想着先检查其他功能是否有相同的情况,就在界面上各功能处点来点去,结果点回之前异常的功能,发现又正常了。这会就意识到可能是前面点的某个功能给此异常功能带来了影响。然后通过检查代码,果真是有个指针没初始化,就在异常的功能里面使用了,而另一个功能则有对该指针使用new对其进行初始化,所以之后再到异常那边去就正常了。
果然对于一些牵扯到关系的地方,指针还真是得及时进行初始化,不然不初始化,野指针,在别的地方就是使用前进行是否为nullptr判断也不管用。