最近看公司以前的一个项目,用release版本运行不会出现问题,但是用debug版本的就会出现很多断言错误(AssertValid()位置),致使程序崩溃,我在解决的时候也令我很头大,因为这个用到了BCG库,那么我的问题来了。
1,用bcg是不是经常会遇到这种情况?(因为我以前也遇到过这种情况)
2,这种断言错误是否一定要解决,不解决会有什么隐患?(因为release版本是可以用的)
1,用bcg是不是经常会遇到这种情况?(因为我以前也遇到过这种情况)
2,这种断言错误是否一定要解决,不解决会有什么隐患?(因为release版本是可以用的)
我们用ASSERT有的时候只是一些警告,但是跳过程序也不会有问题,这样的ASSERT才不会导致程序崩溃。
eg:
ASSERT(!str.IsEmpty());
strSqlConn = str;
...ASSERT(pOther);
pOther->Function();
void CXXXXView::AssertValid() const
{
CListView::AssertValid();
}void CXXXXView::Dump(CDumpContext& dc) const
{
CListView::Dump(dc);
}CXXXXView* CPRJExplorerView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CPRJExplorerDoc)));
return (CPRJExplorerDoc*)m_pDocument;
}
#endif //_DEBUG
release版本是不用这些的,所以不会崩,那代表不处理这些错误也可以吗?总感觉用着心里没底,毕竟是要给客户用的,可是解决又很困难,网上也有好多人说是BCG的问题,不知道是不是真这么回事。。