• Qt 调试时的错误——Debug Assertion Failed!


    在VS2008中写qt程序时调试出现此问题,但在release模式下就不存在,在网上搜罗了一圈,是指针的问题。

    问题是这样的:

    需要打开两个文件,文件中数据类型是float,我使用QVector进行保存

    QVector<float*> data;

    首先初始化:

    data.insert(0,NULL);//第一个文件数据

    data.insert(1,NULL);//第二个文件数据

    打开第一个文件时,判断data[0]中有误数据,有的话删掉:

    if(data[0])

    {

        delete [](data[0]);

        data.replace(0,NULL);

    }

    打开第二个文件时采取同样的处理方法。

    我在第一次打开第一个文件时,是没问题的,因为这时程序不会运行到if语句内,但是当第二次打开文件时,data[0]内有数据了,所以程序会运行到if语句内,此时就出现了“Debug Assertion Failed”的问题,对于此我暂时也搞不清楚是什么问题。

    网上的说法:1是野指针,2是内存泄露。我这内存是释放掉了的,可能是野指针的问题,因为我是将局部定义的指针分配内存空间后放入容器内的,释放完内存空间后时没法将原来的指针赋NULL的,也就出现了野指针的问题。

    以上是在Debug模式下才会出现的问题,但在Release模式下时该问题就会忽略掉

  • 相关阅读:
    Spring MVC重定向和转发以及异常处理
    Spring MVC注解开发入门
    深入理解Spring MVC
    Spring MVC入门
    Spring Quartz实现任务调度
    Spring WebService入门
    Spring JavaMail发送邮件
    (一)Eureka 服务的注册与发现
    AvtiveMQ 参考
    python
  • 原文地址:https://www.cnblogs.com/Romi/p/3327495.html
Copyright © 2020-2023  润新知