MFC中ASSERT_VALID fails with NULL pointer的个人解决办法[通俗易懂]

MFC中ASSERT_VALID fails with NULL pointer的个人解决办法[通俗易懂]基于MFC在写一个利用GDAL和GDI+显示图像的系统,原有的Image::FromFile和Image::FromStream都用了一遍发现均会造成锁文件的情况,即使在程序用了delete的情况下,按道理FromStream应该不会锁但是我笨拙的编码依然是锁上了。。。索性换GDAL读图像然后用GDI+显示。在码代码中出现了如下的问题:VS2005调试输出显示:ASSERT_VALIDfai

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

基于MFC在写一个利用GDAL和GDI+显示图像的系统,原有的Image::FromFile和Image::FromStream都用了一遍发现均会造成锁文件的情况,即使在程序用了delete的情况下,按道理FromStream应该不会锁但是我笨拙的编码依然是锁上了。。。索性换GDAL读图像然后用GDI+显示。在码代码中出现了如下的问题:

VS2005调试输出显示:ASSERT_VALID fails with NULL pointer

然后华丽丽的中断了,弹窗说是断言引发了个中断,然后出现了这个情形:

MFC中ASSERT_VALID fails with NULL pointer的个人解决办法[通俗易懂]

明显的File路径不对,这个VS的编译器报错也稀里糊涂的不指哪边出错。google了一系列法子依然找不到。然后就是令人崩溃抓狂的各种调试,调了两小时,无果。最终逼我这个MFC菜鸟使出绝招:新建个空的MFC,对照着将原工程涉及到界面的函数逐步注释掉并运行,有问题在就继续注释,到最后丧心病狂的注释的差不多了,bug显示出来了:

在View的析构函数里delete的两个BYTE*的指针没有在构造函数中初始化。

在构造函数中添加两指针=NULL的指令,问题解决。希望以后不要犯同样的错误,同时如果有遇到同样问题的看到这篇渣文能有帮助的话,也就一本满足了。

处女日志,Mark。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196963.html原文链接:https://javaforall.net

(0)
上一篇 2025年9月16日 下午5:43
下一篇 2025年9月16日 下午6:15


相关推荐

  • unity3d自学教程_3D技巧

    unity3d自学教程_3D技巧0.目录简要介绍基本概念视图菜单坐标系统资源元素脚本交互相机操作 1.简要介绍Unity3D软件是由UnityTechnologies公司提供的综合开发环境,主要面向游戏开发人员、虚拟现实设计师等,可用于创建诸如三维视频游戏、建筑可视化、实时三维动画等类型的多媒体内容,并支持这些内容在Windows、iOS、Android等多种平台的发布,功能非常强大。Unity3D

    2022年8月10日
    14
  • ALLEGRO 直接转PADS方法

    ALLEGRO 直接转PADS方法添加用户变量变量名 AEX BIN ROOT 值 PADS 软件中 translators 软件的 bin 目录路径比如我的 AEX BIN ROOT C MentorGraphi 9 5PADS SDD HOME translators win32 bin 添加用户变量变量名 AEX ENABLE JOBPREFS LAYER FIX 值 1 比如我的 A

    2026年3月19日
    2
  • React多页面跳转[通俗易懂]

    React多页面跳转[通俗易懂]render(){const{app:{locationQuery}}=this.props;////////////tolist.jsconst{子页面数据}=this.state;const{id}=locationQuery;///获取当前页面地址栏的idconstinfo=queryA…

    2022年5月30日
    37
  • Linux 安装JDK详细步骤

    Linux 安装JDK详细步骤Linux 系统上一般会安装好 OpenJDK 所以安装 JDK 之前 需要卸载系统自带的 OpenJDK 以及相关的 Java 文件 一 卸载系统自带的 OpenJDK 以及相关的 Java 文件 1 查看 Java 信息以及相关的 Java 文件查看 JDK 信息 输入 java version 检测 jdk 的安装包 输入 rpm qa grepjava2 接着删除相关 Java 文件 并检查是否删除完即可删除输入 rpm enodeps 包名检查是否删除完 输入 rpm qa

    2026年3月16日
    2
  • VScode前端 插件

    VScode前端 插件copyVSCode前端常用插件</h1><divclass=”clear”></div><divclass=”postBody”>1.Aut…

    2022年7月25日
    21
  • 充分不必要条件和必要不充分条件的意思_怎么区分充分必要条件

    充分不必要条件和必要不充分条件的意思_怎么区分充分必要条件转载:https://www.zhihu.com/question/30469121充分条件:只要有A,就一定能达成B,A是B的充分条件。充分不必要条件:有A,一定能达到B;就算没有A,也有可

    2022年8月6日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号