启动MFC程序的时候报错:0xC0000005: 读取位置 0x00000000 时发生访问冲突

此程序的结构是

MouseCap.h

#pragma once

#include <afxwin.h>

class MouseCapApp : public CWinApp
{
public:
    virtual BOOL InitInstance();
};
class CMainWindow : public CFrameWnd
{
protected:
    ...public:
    CMainWindow();
protected:
    afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
    afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
    afx_msg void OnMouseMove(UINT nFlags, CPoint point);
    afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
    DECLARE_MESSAGE_MAP()
};

MouseCap.cpp

#include "MouseCap.h"

MouseCapApp theApp;

... // 其他实现

编译没问题,启动Debug

报错如下

0xC0000005: 读取位置 0x00000000 时发生访问冲突

调用堆栈显示,还没有执行到我写的代码就报错,Null Pointer Exception

结果在MouseCap.cpp加上如下代码就好了(不明觉厉,难道说间接include不行?)

#include <afxwin.h>

再编译运行,没问题

然后我又把MouseCap.cpp中的#include <afxwin.h>删掉,再编译运行,居然没问题了。简直搞笑。

时间: 2024-10-07 14:48:23

启动MFC程序的时候报错:0xC0000005: 读取位置 0x00000000 时发生访问冲突的相关文章

0xC0000005: 读取位置 0x00000000 时发生访问冲突

遇见这种问题一般都是空指针,即:指针里没有赋值~ 如果你对null 进行操作就会产生空指针异常 Object obj = new Object(); 你要知道 obj是一个Object指针变量,指向Object类的一个实例 我们说obj是一个对象 实质是它指向一个对象的首地址 如果这个指针变量obj 没有指向任何空间 你调用它的方法和属性就会出错 例如 Object obj = new Object(); obj.equals("123");这个是没错的 但换下面语句 Object o

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

一般都是指针访问越界或者不能访问的地址 (msvcr80d.dll) 处未处理的异常: 0xC0000005: 读取位置 0x00000000时发生访问冲突,布布扣,bubuko.com (msvcr80d.dll) 处未处理的异常: 0xC0000005: 读取位置 0x00000000时发生访问冲突

程序运行时 0xC0000005: 读取位置 0x00000000 时发生访问冲突 ,可能是 com 组件引入各种问题

在使用com组件事,可能引入很多不是问题的问题,比如CString 定义出运行时出错等等,这些问题解决的办法就是初始化组件 然后释放组件, 在使用组件时,如果仅仅用在按钮事件或者别的mfc 对话框类里面 可以正常使用,但是用到界面线程,而界面线程函数里面调用了函数com 组件的函数,必须初始化.不然就是上面错误 ::CoInitialize(NULL); 组件初始化函数 ::CoUninitialize(); 组件释放函数

有未经处理的异常: 0xC0000005: 读取位置 0xFFFFFFFC 时发生访问冲突

今天遇到一个问题,特在此记录,防止以后再次犯同样的错误: struct UserInfo { CString UserName;          //用户昵称 CString IP;                //用户IP SOCKET socket;             //用户的套接字 bool operator==(const UserInfo &uInfo) const { if (socket == uInfo.socket) return true; return fals

0xC0000005: 写入位置 0x00000000 时发生访问冲突的解决办法(转)

上面的意识就是你吧值付给了不该赋给的变量,或者说你把值付给了不能付给的变量(或者常量) (1)最简单也最直接的错误可能就是scanf()的问题,我们都知道输入的时候都是scanf("%格式",&变量),那么除了字符串(可要&,可不要)之外,所有的输入都需要&,如果你丢了,在很多编译器上变异的时候是查不出来的,也就是说是没有错的,但是输入数据会差生上述错误,是因为写成scanf("%格式",变量)这种形式了,这样你所输入的变量就不知道会存储到哪

HelloWorld.exe 中的 0x0f9265f6 (libcocos2d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0x00000038 时发生访问冲突

加载的资源错误,要么资源不存在,要么路径不对. 第一次出错是因为未把资源放入Resources文件夹里 第二次出错是因为资源路径取错(比如要取的资源文件是DemoLogin.ExportJson,若该文件在Resources文件夹里,则路径是“DemoLogin.ExportJson”,但我的资源是在Resources文件夹的DemoLogin文件夹里,所有路径是“DemoLogin/DemoLogin.ExportJson”)

问题解决——使用CriticalSection后 0xXXXXXXXX处最可能的异常: 0xC0000005: 写入位置 0x00000014 时发生访问冲突

================声明===================== 本文原创,转载请保持文章的完整性(含本声明),并显要的著名作者和出处. 本文链接:http://blog.csdn.net/wlsgzl/article/details/42003487 ========================================= 电脑有一个SSD和一个HHD,SSD只有一个分区做系统盘,HHD分4个区:D.E.F.G.其中D盘放工程代码. 还原电脑的时候,诺顿抽风,把HHD的

0x0F19B7EC (ucrtbased.dll)处(位于 ex6.exe 中)引发的异常: 0xC0000005: 写入位置 0x00740000 时发生访问冲突。

下面的代码在编译,运行时没有问题,在输入内容是出现异常如下: 0x0F19B7EC (ucrtbased.dll)处(位于 ex6.exe 中)引发的异常: 0xC0000005: 写入位置 0x00740000 时发生访问冲突. #include "stdafx.h"#include <conio.h>#include <stdio.h> int main(){ int NUM, I; struct STUDENT { char NAME[30]; int A

0xC0000005: 写入位置 0x0000000002450040 时发生访问冲突

遇到这样的报错,没有其他提示,跳入汇编代码,瞬间傻了 可以查看调试中的代码图,查看调用的顺序,定位问题位置 如果代码图看见的全是地址,说明访问的地方已经销毁,具体在哪里,可以借助中断时候的线程窗口 黄箭头指向 当前运行到那个线程,对比你的线程ID,大概能确定在那个线程,然后在分析 LOG_INFO << "rtsp listen start!!! RtspPro() thread id is " << boost::this_thread::get_id();