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

dbgheap.c错误!

楼主qiek(道可道非常道)2005-01-02 01:17:23 在 VC/MFC / 基础类 提问

程序一关闭就出现以上错误,如何调试解决?新手,请说的详细点儿 问题点数:100、回复次数:6Top

1 楼fanqing(火影忍者+28%(准备学习进程/线程))回复于 2005-01-02 08:09:31 得分 10

upTop

2 楼EnochShen(小疯子:真的好菜—知耻而后勇!)回复于 2005-01-02 09:15:16 得分 10

可能是堆溢出,检查申请内存和赋值的代码.看看有没有越界Top

3 楼EnochShen(小疯子:真的好菜—知耻而后勇!)回复于 2005-01-02 09:20:56 得分 10

比如这个样子  
   
  //堆溢出  
   
  class   HeapOverruns  
  {  
  public:  
  HeapOverruns()  
  {  
  m_pBuffer   =   NULL;  
  }  
   
  ~HeapOverruns()  
  {  
  if(m_pBuffer   !=   NULL)  
  {  
  free(m_pBuffer);  
  }  
  }  
   
  void   InitBuffer(char*   pBuffer)  
  {  
  m_pBuffer   =   pBuffer;  
  }  
   
  void   SetBuffer(const   char*   pBuffer)  
  {  
  strcpy(m_pBuffer,pBuffer);  
  }  
   
  const   char*   GetBuffer()  
  {  
  return   m_pBuffer;  
  }  
   
  private:  
          char*   m_pBuffer;  
   
  };  
   
  HeapOverruns*   pHeapOverruns   =   NULL;  
   
  void   CMainFrame::OnTest8()    
  {  
          char   arg1[128];  
   
          char   arg2[4]   =   {0x0f,   0x10,   0x40,   0};          
          int   offset   =   0x40;      
                                       
          memset(arg1,   0xfd,   offset);  
          arg1[offset]       =   (char)0x94;  
          arg1[offset+1]   =   (char)0xfe;  
          arg1[offset+2]   =   (char)0x12;  
          arg1[offset+3]   =   0;  
          arg1[offset+4]   =   0;  
   
  pHeapOverruns   =   new   HeapOverruns;  
   
  char*   pBuffer1   =   NULL;  
  pBuffer1   =   (char*)malloc(20);  
  char*   pBuffer2   =   NULL;  
  pBuffer2   =   (char*)malloc(20);  
   
  pHeapOverruns->InitBuffer(pBuffer1);  
  strcpy(pBuffer2,arg1);  
  pHeapOverruns->SetBuffer(arg2);  
   
  strOutput.Format("pHeapOverruns->GetBuffer()   =   %s\r\npBuffer2   =   %s",  
  pHeapOverruns->GetBuffer(),pBuffer2);  
  AfxMessageBox(strOutput);  
   
  if(pBuffer2   !=   NULL)  
  {  
  free(pBuffer2);  
  }  
   
  if(pHeapOverruns   !=   NULL)  
  {  
  delete   pHeapOverruns;  
  }  
  }  
  Top

4 楼HunterForPig(留着口水的猪)回复于 2005-01-02 12:35:11 得分 20

关于内存泄露的文章,希望对你有用!  
  http://www.csdn.net/Develop/Read_Article.asp?Id=22766  
  http://www.csdn.net/Develop/Read_Article.asp?Id=22767  
  http://www.csdn.net/Develop/Read_Article.asp?Id=22768  
  Top

5 楼crystal521(【云淡风轻】)回复于 2005-01-02 13:18:01 得分 10

参考一下:  
  在VisualC++中检测和隔离内存泄漏  
  http://dev.csdn.net/develop/article/54/54227.shtmTop

6 楼vcleaner(我没当大哥很久了.......)回复于 2005-01-02 13:49:04 得分 40

呵呵,主要还是操作了非法的指针造成的!新年快乐!Top

相关问题

  • c#CS0120错误求助
  • 一个C的错误?
  • C#处理错误问题
  • C++primer中的错误??
  • C++编译错误问题
  • c++调试中的错误
  • C++ PRIMER中的错误
  • C在C++环境下的错误?
  • C++ Builder编译错误问题:SelectDirectory
  • thinking in c++ 2e 的小小的错误吗?

关键词

  • .net
  • article
  • csdn
  • develop
  • asp
  • null
  • pbuffer
  • heapoverruns
  • pheapoverruns
  • arg1

得分解答快速导航

  • 帖主:qiek
  • fanqing
  • EnochShen
  • EnochShen
  • HunterForPig
  • crystal521
  • vcleaner

相关链接

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

广告也精彩

反馈

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