CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  数据库

ASSERT 错误,请求解答

楼主streamIF()2005-04-26 15:26:35 在 VC/MFC / 数据库 提问

DEBUG出现错误,但RELEASE   没有一点问题,但影响我跟踪程序。错误提示如下:  
  Debug   Assertion   Failed!  
   
  Program:   ...  
  File:   winhand.cpp  
  Line:199  
   
  For   information   on   how   your   program   cause   an   assertion  
  failure,see   the   Visual   C++   documentation   on   asserts.  
   
  (Press   Retry   to   debug   the   application)  
   
  点击重试。(有机会跟进)  
  定位于:  
   
  void   CHandleMap::RemoveHandle(HANDLE   h)  
  {  
  //   make   sure   the   handle   entry   is   consistent   before   deleting  
  CObject*   pTemp   =   LookupTemporary(h);  
  if   (pTemp   !=   NULL)  
  {  
  //   temporary   objects   must   have   correct   handle   values  
  HANDLE*   ph   =   (HANDLE*)((BYTE*)pTemp   +   m_nOffset);     //   after   CObject  
  ASSERT(ph[0]   ==   h   ||   ph[0]   ==   NULL);  
  if   (m_nHandles   ==   2)  
  ASSERT(ph[1]   ==   h);/////定位在这里  
  }  
  pTemp   =   LookupPermanent(h);  
  if   (pTemp   !=   NULL)  
  {  
  HANDLE*   ph   =   (HANDLE*)((BYTE*)pTemp   +   m_nOffset);     //   after   CObject  
  ASSERT(ph[0]   ==   h);  
  //   permanent   object   may   have   secondary   handles   that   are   different  
  }  
  //   remove   only   from   permanent   map   --   temporary   objects   are   removed  
  //     at   idle   in   CHandleMap::DeleteTemp,   always!  
  m_permanentMap.RemoveKey((LPVOID)h);  
  } 问题点数:50、回复次数:13Top

1 楼idAnts(此广告位招租)回复于 2005-04-26 17:33:05 得分 50

你这个时候看看调用堆栈,看看是你程序里的什么地方调用到了这里。Top

2 楼streamIF()回复于 2005-04-26 17:50:33 得分 0

我的程序是在我重写CListCtrl开始出现的,我用了如下:  
  BOOL   CIFListCtrl::ListItem(const   CString   strSQL,  
                            _ConnectionPtr   pCon,   _RecordsetPtr   pSet)//这样传入后,问题就出现了。  
  {  
  .....  
  }  
  不知是这是有不对的地方,请高人指点  
  Top

3 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-04-26 18:22:37 得分 0

调试一下Top

4 楼streamIF()回复于 2005-04-27 08:46:49 得分 0

我确定是这个造成的问题,但是,这个语句很正常啊,而且我用了不同的方法,但只要用这个INSERTITEM就有出错(注意,不是每次都出错)  
  BOOL   CIFListCtrl::ListItem(const   CString   strSQL,  
                            _ConnectionPtr   pCon,   _RecordsetPtr   pSet)//这样传入后,问题就出现了。  
  {  
  ......  
            InsertItem(nRow,strContent);//只要有这行就出错,没有这句就没有问题,我好纳闷,  
                                                                    //为什么?????????????????????  
  }  
  Top

5 楼streamIF()回复于 2005-04-27 08:48:54 得分 0

InsertItem(nRow,strContent);//无论反这个函数放在什么位置,或用它的重载版,都一样,不理解  
  Top

6 楼vcleaner(我没当大哥很久了.......)回复于 2005-04-27 09:00:13 得分 0

ASSERT宏在Release编译的时候,已经失去其作用了,不工作了,当然不影响程序!Top

7 楼vcleaner(我没当大哥很久了.......)回复于 2005-04-27 09:01:32 得分 0

参考一下:  
  http://www.vckbase.com/document/viewdoc/?id=1183Top

8 楼idAnts(此广告位招租)回复于 2005-04-27 09:14:34 得分 0

你用多线程了么?Top

9 楼streamIF()回复于 2005-04-27 09:16:07 得分 0

用了,Top

10 楼streamIF()回复于 2005-04-27 09:21:51 得分 0

我有一个DLG,将我的自制CLISTCTRL->SUBCLASSDLGITEM(IDC_LIST,THIS);  
  但是在出问题时,线程没有打开啊Top

11 楼streamIF()回复于 2005-04-27 09:30:56 得分 0

还有一个奇怪的事:  
  如果我在INSERTITEM(NROW,STRCONTENT)设定断点,跟踪,  
  问题明显减少。(晕,是不是运行快慢造成),  
  如是,我SLEEP(10-1000),  
  结果不行.  
  为什么跟踪调试却不出问题,不跟踪调试就也问题??Top

12 楼idAnts(此广告位招租)回复于 2005-04-27 09:59:10 得分 0

不太清楚了。你检查看看有没有多线程访问你自己写的ListCtrl类的可能。Top

13 楼goodheartppl(goodheart)回复于 2005-04-27 14:29:34 得分 0

把代码发过来,我帮你调Top

相关问题

  • 编译错误,请求解答!
  • 一个Tabel错误问题,请求解答!
  • 请求winsocket api解答?
  • 80040e10错误,求解答!
  • 求jxl OutOfMemory错误解答
  • 错误类型的解答
  • 再次请求解答!!谢谢
  • 菜鸟问题,请求解答!!20分!!!
  • 奇怪问题请求高手解答:
  • 奇怪问题请求高手解答??????????

关键词

  • debug
  • null
  • ptemp
  • ph
  • 错误
  • insertitem
  • assert
  • 出错
  • nrow
  • strcontent

得分解答快速导航

  • 帖主:streamIF
  • idAnts

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo