VC天下 » C/C++

C++错误集锦

1、Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
expression
很诡异的出现了这个问题。最要命的是使用VS F5调试和Crtl + F5直接运行,确不出现这个错误。只有在生成好的目标路径下双击exe时,才出现这个错误。
一时不知道如何解决。因为无法调试(在调试状态下是正常的),所以不好定位问题所在。最后只能通过printf打日志,注释代码,慢慢试着查找问题。最后定位到qt读写xml的一个函数上。但是这个函数看着又没有任何问题,让人头疼不已。
最后,才发现是库的问题。使用的库不一致导致的。这个exe因为是QT5.6版本开发的,而目标路径下的exe文件夹内有以前残留的QT5.1的Qt5Xml.dll,导致出现的这个问题。
总结:以后这种问题,找配置环境,找引用的库,不是代码的问题。

2、Debug运行没有问题,Release版本运行有问题
Debug版本完全正常,而Release版本编译通过,却一运行就停止,结束进程。难点还是在无法调试。
问题排查:查找配置文件,或者其他要操作的文件资源、数据库资源等,可能是路径不对,没有相应的文件夹,或者使用日志等,没有指定的日志文件。
问题解决:使用了log4cpp,它无法动态创建文件夹,Debug中有了那个文件夹,而Release中没有那个文件夹,导致Release版本崩溃。

发表评论