为什么一个CFile对象调用Close()时,会出现程序终止的错误,求高手指教

kkrmr 2011-08-03 05:11:37
为什么一个CFile对象调用Close()时,会出现程序终止的错误,求高手指教
...全文
404 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kkrmr 2011-08-03
  • 打赏
  • 举报
回复
问题解决了
m_bIsSave没有初始化,哈哈谢谢各位
luckdjc 2011-08-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 huayehanshan 的回复:]
m_File没有看到打开的地方,如果没有打开过,直接close当然会出错了。再仔细看看代码。看看有没有m_File.Open();
[/Quote]

貌似确实是这个问题啊 close 是释放资源 你没调用资源 怎么去释放? 释放一个不存在的东西 肯定错误
叶落寒山 2011-08-03
  • 打赏
  • 举报
回复
m_File没有看到打开的地方,如果没有打开过,直接close当然会出错了。再仔细看看代码。看看有没有m_File.Open();
kkrmr 2011-08-03
  • 打赏
  • 举报
回复
CString strpass;
CString sFileName;

CTime time = CTime::GetCurrentTime();
strpass = time.Format(_T("%Y-%m-%d %H:%M:%S"));
sFileName = strpass + _T("文件.txt");

WCHAR cFilePath[MAX_PATH];
HANDLE hProcess = GetCurrentProcess();
DWORD dwSize = GetModuleFileName(NULL,cFilePath,MAX_PATH);
CString strPath = cFilePath;
strPath = strPath.Left(strPath.GetLength() - 16);
strPath += _T("\\SAVE\\");
BOOL b = CreateDirectory(strPath.GetBuffer(strPath.GetLength()),NULL);
sFileName = strPath + sFileName;

CFileDialog dlg(FALSE, _T("txt"),sFileName,OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY,
_T("文件(*.txt)|*.txt||"),this);
dlg.m_ofn.lpstrTitle = _T("保存");

if (dlg.DoModal() == IDOK)
{
if (m_bIsSave)
{
m_bIsSave = FALSE;
m_File.Close();
}
}
至善者善之敌 2011-08-03
  • 打赏
  • 举报
回复
放代码!
ouyh12345 2011-08-03
  • 打赏
  • 举报
回复
看调用堆栈
某个地方还在读、写?

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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