利用Debug调试代码解决0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突问题

 更新时间:2023年03月09日 08:24:19   作者:机巧的胖子  
这篇文章主要介绍了利用Debug调试代码解决0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突,本文给大家分享完美解决方案,需要的朋友可以参考下

VS2019利用Debug调试代码解决0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突
之前一直是使用release发布代码模式进行程序编译,前天突然出现这个问题:

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

查找资料发现大概率是出现了空指针。没有判断指针是否为空就进行后续操作导致的错误,但是release模式并没有提示问题出现在哪里,只是显示程序崩掉,并且给你错误信息,查找资料后发现Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用,但是会忽略调试信息,这不利于我们进行程序调试。(所以我只凭借经验进行初步调试,但是效率很低也没有解决实际问题)

而debug配置能够包含调试信息,并且不作任何优化,便于程序员调试程序。

这就方便我们进行程序的调试和断点设置,设置了断点就可以看到所有变量的信息。就方便我们找到问题出现在了哪里。

果然,当我将配置改为debug后,运行程序,就会自动显示下图所示地方发生错误:为nullptr,空指针。那么问题就显而易见了。

在这里插入图片描述

但是我在上句语句中已经获得了pGalvanometer对象指针,这里不应该是nullptr。所以我在该位置设置断点,运行后,发现hr不为S_OK,而是显示加载有问题,那么很显然问题出在我加载外部组件COM中了。

在这里插入图片描述

但是我并没有改变COM组件的加载代码,于是认为可能组件注册出现问题。于是我重新注册了一下COM组件。

在这里插入图片描述

问题成功解决!

该次经历给我的经验就是在编写调试代码时要及时切换为Debug模式,因为Debug会保留调试信息,而且代码是原汁原味的,不会做任何改变,也方便我们进行调试。我本身并不是计算机专业,所以这些很基础的经验对我来说也帮助甚大。

到此这篇关于利用Debug调试代码解决0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突问题的文章就介绍到这了,更多相关Debug调试代码解决0xC0000005内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++中宏的使用问题详解

    C++中宏的使用问题详解

    宏替换是C/C++系列语言的技术特色,C/C++语言提供了强大的宏替换功能,源代码在进入编译器之前,要先经过一个称为“预处理器”的模块,这个模块将宏根据编译参数和实际编码进行展开,展开后的代码才正式进入编译器,进行词法分析、语法分析等等。
    2016-05-05
  • Qt数据库应用之实现数据打印到纸张

    Qt数据库应用之实现数据打印到纸张

    关于Qt打印内容到纸张,网上的办法非常多,比如有些直接用painter绘制,逐步控制分页打印。本文介绍的方法则是将内容作为html设置到文档对象,再调用文档对象的print方法传入QPrinter对象打印,感兴趣的同学可以了解一下
    2022-01-01
  • C语言全部内存操作函数的实现详细讲解

    C语言全部内存操作函数的实现详细讲解

    这篇文章主要介绍了C语言全部内存操作函数的实现详细讲解,作者用图文代码实例讲解的很清晰,有感兴趣的同学可以研究下
    2021-02-02
  • c++11可变参数使用示例

    c++11可变参数使用示例

    这篇文章主要介绍了c++11可变参数使用示例,需要的朋友可以参考下
    2014-03-03
  • C语言的字符空间与非字符空间你了解吗

    C语言的字符空间与非字符空间你了解吗

    这篇文章主要介绍了C语言的字符空间与非字符空间,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下,希望能给你带来帮助
    2021-08-08
  • 在C++中实现云端存储变量的操作步骤

    在C++中实现云端存储变量的操作步骤

    随着云计算技术的快速发展,现在我们可以将数据存储在云端,以便于在不同设备和地点访问,在C++中,我们也可以通过一些方法来实现这个功能,本文将详细介绍如何在C++中实现云端存储变量,需要的朋友可以参考下
    2023-11-11
  • linux之sed命令的用法

    linux之sed命令的用法

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法
    2013-10-10
  • 如何利用最简单的C语言实现AI五子棋

    如何利用最简单的C语言实现AI五子棋

    这篇文章主要给大家介绍了关于如何利用最简单的C语言实现AI五子棋的相关资料,包含了一些五子棋常见的功能,文中也通过详细的实例代码和图片介绍的非常详细,需要的朋友可以参考下
    2021-07-07
  • 基于C语言实现简单的五子棋游戏

    基于C语言实现简单的五子棋游戏

    这篇文章主要为大家详细介绍了基于C语言实现简单的五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 用VC++6.0实现石头剪刀布游戏的程序

    用VC++6.0实现石头剪刀布游戏的程序

    最先看到这个游戏代码是python版的,后来看到有小伙伴用VC++重写了一遍,运行之后发现有些小bug,便尝试这修复了一下,并增加了些小功能,这里分享给大家。
    2015-03-03

最新评论