本帖最后由 VisualEleven 于 2014-08-06 19:03:08 编辑

解决方案 »

  1.   

    断点调试,看call stack窗口,应该和这个变量没关系
    0xC0000005错误的含义是非法访问内存地址,包括读、写、执行三种类型的访问,可能情况有两种:一种是该地址没有分配内存,也就是无效地址,在调试器中查看该地址显示“??”;另一种是该地址不允许指定类型的访问,例如内存地址是只读的,而程序要改写内存中的数据等。
    遇到此类问题时,调试程序,在出错时中断,首先查看最终出错的原因,再看代码是不是自己的,如果不是自己的代码,可以根据调用堆栈找出是自己调用了哪个函数引起的问题并定为到调用的代码上,查看相关变量的值,找出存在问题的变量,再查找问题的来源。
    如果你的程序是在安装Hook时修改代码出现了这个错误,那是因为代码区默认是不可改写的,需要用VirtualProtect将其改为可写后才能修改。
      

  2.   

    Debug下调试一下,打开call stack,看函数调用堆栈~
      

  3.   

    谢谢楼上几位的回答,我设置断点了,但是,因为我的这部分程序是系统启动前加载数据的全局变量部分,所以设断点编译运行时这个断点无效啊,程序会直接跳到出现中断的地方,而这个地方是VS里自己的头文件atlsimpstr.h里,却找不到引发这个中断的原因,还有当我把我定义的这个变量注释掉之后它就没问题了
      

  4.   

    崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。
      

  5.   

    "如果把这个变量注释掉的话,就没任何问题了"
    Are you sure?