• msvcr80d.dll–处未处理的异常: 0xC0000005


    转自:http://www.dakaren.com/index.php/archives/358.htm/page/3/

    本人出现的中断错误:

    AudioManager.exe 中的 0x657ac2b2 (msvcr80d.dll) 处未处理的异常: 0xC0000005: 读取位置 0xccccccc8 时发生访问冲突

    网上类似的帖子介绍:

    开发环境 VS2005 + MFC基于对话框的工程

    BOOL CVideoMFCApp::InitInstance()
    {
        // 如果一个运行在 Windows XP 上的应用程序清单指定要
        // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
        //则需要 InitCommonControlsEx()。否则,将无法创建窗口。
        INITCOMMONCONTROLSEX InitCtrls;
        InitCtrls.dwSize = sizeof(InitCtrls);
        // 将它设置为包括所有要在应用程序中使用的
        // 公共控件类。
        InitCtrls.dwICC = ICC_WIN95_CLASSES;
        InitCommonControlsEx(&InitCtrls);

        CWinApp::InitInstance();

    #ifdef _AFXDLL
        Enable3dControls();            // Call this when using MFC in a shared DLL
    #else
        Enable3dControlsStatic();    // Call this when linking to MFC statically
    #endif

        int w = GetSystemMetrics(SM_CXSCREEN);
        int h = GetSystemMetrics(SM_CYSCREEN);

        // 标准初始化
        // 如果未使用这些功能并希望减小
        // 最终可执行文件的大小,则应移除下列
        // 不需要的特定初始化例程
        // 更改用于存储设置的注册表项
        // TODO: 应适当修改该字符串,
        // 例如修改为公司或组织名
        SetRegistryKey(_T("应用程序向导生成的本地应用程序"));

        CVideoMFCDlg dlg;
        m_pMainWnd = &dlg;
        INT_PTR nResponse = dlg.DoModal();
        if (nResponse == IDOK)
        {
            // TODO: 在此放置处理何时用
            //  “确定”来关闭对话框的代码
        }
        else if (nResponse == IDCANCEL)
        {
            // TODO: 在此放置处理何时用
            //  “取消”来关闭对话框的代码
        }

        // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
        //  而不是启动应用程序的消息泵。
        return FALSE;
    }

    点击中断跳到:

    *---------------------------------------------------------------------------
     *
     * Memory management
     *
     --------------------------------------------------------------------------*/

    /***
    *static int CheckBytes() - verify byte range set to proper value
    *
    *Purpose:
    *       verify byte range set to proper value
    *
    *Entry:
    *       unsigned char *pb       - pointer to start of byte range
    *       unsigned char bCheck    - value byte range should be set to
    *       size_t nSize            - size of byte range to be checked
    *
    *Return:
    *       TRUE - if all bytes in range equal bcheck
    *       FALSE otherwise
    *
    *******************************************************************************/
    extern "C" static int __cdecl CheckBytes(
            unsigned char * pb,
            unsigned char bCheck,
            size_t nSize
            )
    {
            int bOkay = TRUE;
            while (nSize--)
            {
               if (*pb++ != bCheck)      //》中断点 
                {
    /* Internal error report is just noise; calling functions all report results - JWM */
    /*              _RPT3(_CRT_WARN, "memory check error at 0x%p = 0x%02X, should be 0x%02X.\n", */
    /*                    (BYTE *)(pb-1),*(pb-1), bCheck); */
                    bOkay = FALSE;
                }
            }
            return bOkay;
    }

    上述加粗红色代码运行时报错,大部分代码都是自动生成的
    报错提示“Debug assertion failed ” 报错具体执行代码是
    安装目录下的 dlgdata.cpp 的 40行 ,下面代码中加粗红色部分

    网上的讨论:

    运行到INT_PTR nResponse = dlg.DoModal();出错
    跟进去以后,发现具体位置在ASSERT(FALSE);这里

    检查下是否你把资源中的某个控件删除了?
    并且DoDataExchange还在使用这个控件的ID。

    如果是这样的话,解决的方法就是,查找这里nIDC的值对应的ID的DEFINE,看看是否在DoDataExchange使用。

    并且此ID无相关的在.rc文件中的定义。

    C/C++ code
    pSite = m_pDlgWnd->GetOleControlSite(nIDC);
          if (pSite == NULL)
          {
               TRACE(traceAppMsg, 0, "Error: no data exchange control with ID 0x%04X.\n", nIDC);
              ASSERT(FALSE);
              AfxThrowNotSupportedException();
          }

    》》》》》》》》》》》》》》》》》》》》》》》
    本人是怎样解决问题的:
    本人出现过上面的问题,程序编译一直是正确的,但运行总是不能显示对话框,显示如题所示错误。
    根据csdn上面的说明,找出问题是resource.h里的几个ID的关系,有ID没有用过的删除掉,然后在资源的rc文件里面对应部分报错,找出来删掉即可。
    花了几天时间终于搞定这个问题了,谢谢csdn及上面的朋友们。

  • 相关阅读:
    各种算法七
    各种算法六
    使用URLConnection调用axis1.4开发的webservice
    JDBC结果集rs.next()注意事项
    URLConnection调用接口
    axis1.4开发webservice客户端(快速入门)-基于jdk1.4
    axis1.4开发webservice服务端(快速入门)-基于jdk1.4
    FMDB数据库的简单实用
    Xcode5 取消项目ARC,或者单个类ARC切换
    用CornerStone配置SVN,HTTP及svn简单使用说明
  • 原文地址:https://www.cnblogs.com/cumtb3S/p/1916392.html
Copyright © 2020-2023  润新知