Qt 調試時的錯誤——Debug Assertion Failed!

在VS2008中寫qt程序時調試出現此問題,但在release模式下就不存在,在網上搜羅了一圈,是指針的問題。web

問題是這樣的:spa

須要打開兩個文件,文件中數據類型是float,我使用QVector進行保存指針

QVector<float*> data;調試

首先初始化:orm

data.insert(0,NULL);//第一個文件數據內存

data.insert(1,NULL);//第二個文件數據ci

打開第一個文件時,判斷data[0]中有誤數據,有的話刪掉:qt

if(data[0])it

{io

    delete [](data[0]);

    data.replace(0,NULL);

}

打開第二個文件時採起一樣的處理方法。

我在第一次打開第一個文件時,是沒問題的,由於這時程序不會運行到if語句內,可是當第二次打開文件時,data[0]內有數據了,因此程序會運行到if語句內,此時就出現了「Debug Assertion Failed」的問題,對於此我暫時也搞不清楚是什麼問題。

網上的說法:1是野指針,2是內存泄露。我這內存是釋放掉了的,多是野指針的問題,由於我是將局部定義的指針分配內存空間後放入容器內的,釋放完內存空間後時無法將原來的指針賦NULL的,也就出現了野指針的問題。

以上是在Debug模式下才會出現的問題,但在Release模式下時該問題就會忽略掉

相關文章
相關標籤/搜索