CFile指针对象m_pFile Close之后,delete时崩溃

Tiger-3D 2014-04-16 05:20:52
	if(m_pFile != NULL)
{
m_pFile->Close();
delete m_pFile;
m_pFile = NULL;
}
m_pFile是new出来的,也打开文件了,这些步骤是没有出问题的。使用完这个文件之后,到上面代码中的delete这步时挂掉了,程序指向了degheap.c中的这行代码:
  /* Error if freeing incorrect memory type */
_ASSERTE(pHead->nBlockUse == nBlockUse);

另外,这些文件操作是封装在一个lib里面的。现在非常郁闷啊,请助我一臂之力!
...全文
256 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
geniu_vs 2015-04-23
  • 打赏
  • 举报
回复
我在conn.close()后再delete conn时也有这个问题,错误提示是“*n*.dll损坏”之类的,在网上查了半天后感觉错误原因是:“释放对象过多造成的”这个解释比较合理,虽然我也只创建了一个对象并且只delete一次。所以我采取的措施是 //delete conn; 嘿嘿……不报错了。。。 代码如下: int _tmain(int argc, _TCHAR* argv[]) { TiXmlDocument* doc=new TiXmlDocument("E:\\zzy_test\\DOCDB-201447-Amend-PubDate20141114AndBefore-YU-0001.xml"); doc->LoadFile(); //获取根节点 TiXmlElement* root=doc->RootElement(); MYSQL* conn=new MYSQL(); //调用operateNode函数,遍历根节点 flag++; if (connectionMySQL(conn)) { operateNode(root,conn); //遍历节点并选取有用数据存库(Function函数) mysql_close(conn); //关闭数据库 cout<<"执行完毕!"<<endl; }else { printf("未执行数据库操作!"); } delete doc; //delete conn; getchar(); return 0; }
Tiger-3D 2014-04-18
  • 打赏
  • 举报
回复
应该是debug的程序调用了release的lib导致了这个问题。 我让debug的程序链接debug的lib,release的程序链接release的lib之后,这个问题就没有了
副组长 2014-04-17
  • 打赏
  • 举报
回复
这几行代码没有问题,估计是其它什么地方越界将这里覆盖了什么的。不过好测试,在delete前对CFile对象再进行一些测试操作看看还可以用不,要是不能用了就到别处找原因吧。 删除前才关闭文件?够晚的。
schlafenhamster 2014-04-16
  • 打赏
  • 举报
回复
或者 m_pFile 移动过. new 出来的 , 不要移动.
schlafenhamster 2014-04-16
  • 打赏
  • 举报
回复
m_pFile 被其他 操作破坏
zgl7903 2014-04-16
  • 打赏
  • 举报
回复
可能有越界操作, 详细看看 memset memcpy 数组等操作
dahaiI0 2014-04-16
  • 打赏
  • 举报
回复
就这点代码看不出什么问题,可以试下屏蔽其他代码,或者写个lib demo,只对CFile操作看下还会有问题没
Tiger-3D 2014-04-16
  • 打赏
  • 举报
回复
引用 1 楼 dahaiI0 的回复:
m_pFile也是在lib里new的么
是的,在一个Begin函数里面new的,然后在一个End函数里面来Close和delete的
dahaiI0 2014-04-16
  • 打赏
  • 举报
回复
m_pFile也是在lib里new的么

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧