【问题标题】:getting error in "delete CDocManager::pStaticDocManager;"在“删除 CDocManager::pStaticDocManager;”中出现错误
【发布时间】:2011-01-10 19:47:57
【问题描述】:

在运行以下代码时

if (CDocManager::pStaticDocManager != NULL)
  {
   delete CDocManager::pStaticDocManager;
   CDocManager::pStaticDocManager = NULL;
  }

delete 语句中出现异常“ChinaEncrypter.exe 中 0x0041f09d 处的未处理异常:0xC0000005:访问冲突读取位置 0x00003130”。

*注意:*此错误仅在发布模式下出现,pStaticDocManager 仅在发布模式下初始化。在调试模式下,它在整个过程中都具有 NULL 值。

提前致谢。

【问题讨论】:

  • 无需检查 NULL,delete 会自动进行
  • 你能进入 CDocManager 析构函数的框架源代码吗?同时打开异常窗口 (Ctrl+E) 并在引发 Win32 异常时中断。尝试离访问冲突的根源更近一点。
  • 你的代码是清理静态文档管理器还是框架代码?

标签: visual-c++ mfc


【解决方案1】:

您是否将 pStaticDocManager 显式初始化为 NULL ?

还要确保 pStaticDocManager 指向的实例已正确初始化其所有成员。

【讨论】:

  • 不,我没有明确初始化它。在调用 SHBrowseForFolder(&binfo) 时,它正在初始化。
猜你喜欢
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 2016-07-21
  • 2014-01-10
  • 2023-03-14
  • 2016-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多