首页 > 编程语言 >C++ : 引发了异常: 写入访问权限冲突。 this 是 nullptr。

C++ : 引发了异常: 写入访问权限冲突。 this 是 nullptr。

时间:2023-01-29 20:25:02浏览次数:50  
标签:访问 nullptr 写入 C++ volt MyVolt 异常

在写代码的时候遇到了一个问题

引发了异常: 写入访问权限冲突。
this 是 nullptr。


程序抛异常。

前情提要:

MFC程序,我自己写了一个类 MyVolt,里面有一个成员函数 CollectVolt(),字段m_hMutex

在 另一个类中定义了 MyVolt *m_volt,调用 m_volt.CollectVolt(),执行到 m_hMutex的赋值语句时抛出上述异常。

一开始以为是public的问题,排除不是,后来以为是作用域的问题,但是想到之前也没有遇到这种问题,暂时不考虑这个可能性。

分析:this 是在类创建的时候的,编译器提供的参数,用来调用成员函数和变量。那么异常出现的原因和成员函数本身没有太大关系,更有可能是在定义 类对象的时候,this 是空的。

检查发现,在定义 MyVolt *m_volt 对象的时候,只是定义了对象,没有为其分配内存空间。

改成:MyVolt *m_volt = new MyVolt(); 即可。

 

同时进行调试也可以发现问题。

MyVolt *m_volt;

 

此时的 m_Volt 的指针是没有内存地址的,不可访问。

MyVolt *m_volt = new MyVolt();

 

此时的 m_volt 是有内存地址的。
————————————————
版权声明:本文为CSDN博主「专注嗑糖一百年」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/L946494/article/details/109285227

标签:访问,nullptr,写入,C++,volt,MyVolt,异常
From: https://www.cnblogs.com/Groot3377/p/17073735.html

相关文章

  • C++复健:运算符重载,实现string容器,实现string和vector的迭代器
    使得对象的运算像内置类型一样a.operator+(b);重载运算符的一些注意点:不能重载运算符操作基础数据类型:(1)重载运算符必须和用户定义的class类型一起使用(2)重载的运算符......
  • C++终章:探讨C++ 11 新标准
    一、前述此为《C++PrimerPlus(第6版)》一书的终章,本章对前面学习的一些C++11新性能做了提要总结,并针对移动语义、包装器、lambda表达式等新性能做了专门的拓展和介绍,本白......
  • [C++]Makefile概要
    ####Makefile变量和赋值符##延迟赋值: = 变量的正常设置,但值字段中提到的任何其他变量都在使用变量时用其值递归展开,而不是声明变量时的值## 延迟变量使用[......
  • 奇巧:C++ 调用python方法
    方法一:使用python提供给C/C++的API主流方法将python程序编程文本形式的动态链接库,在c/c++程序中调用其中定义的函数。本质上是在c++中启动了一个python解释器,由......
  • C++ Day10 统计圣经文本的词频 &文本查询程序
    一、编程题--统计圣经出现的单词以及词频统计一篇英文(The_Holy_Bible.txt)文章中出现的单词和词频,输入:某篇文章的绝对路径;输出:词典(词典中的内容为每一行都是一个“单词......
  • 使用Python实现高效摸鱼,批量识别银行卡号码并且自动写入Excel表格
    每当有新员工入职,人事小姐姐都要收集大量的工资卡信息,并且生成Excel文档,看到小姐姐这么辛苦,我就忍不住要去帮她了…于是我用1行代码就实现了自动识别银行卡信息并且自......
  • VC++的Unicode编程
    一、什么是Unicode先从ASCII说起,ASCII是用来表示英文字符的一种编码规范。每个ASCII字符占用1个字节,因此,ASCII编码可以表示的最大字符数是255(00H—FFH)。其实,英文字符......
  • gdb同时调试python和c++
    说明:当我们的python程序的一些函数的后端实现为C++时(比如Pytorch,TensorFlow或tvm等)可以使用当前方法调试。有两种方式可以安装调试环境:一.搭建环境有两种方式搭建......
  • Python和C++联合调试
     python和c++分别在Linux和Windows下联合调试首先创建一个python测试项目和一个c++拓展项目一、在Windows下进行调试1.编译器安装2.C拓展模块安装3.调试......
  • ubuntu下C++如何调用python程序,gdb调试C++代码
    Linux下gdb调试C++代码:http://jingyan.baidu.com/article/acf728fd464984f8e410a369.html主要ubuntu下使用C++调用Python:#python代码:(processing_module.py)importcv2......