1. 程式人生 > >Qt程式異常終止的原因

Qt程式異常終止的原因

一、在使用指標之前,要進行指標是否為null的判斷,如果為NULL卻直接使用該指標,就會異常終止。如在QTableView:

QStandardItemModel *model = new QStandardItemModel;
model->item(0,1)->text()
單元格沒編輯過,直接用 model->item(0,1)->text() 的話,程式會異常終止。

二、解構函式中加入釋放記憶體的delete程式碼後,關閉Qt應用程式,會出現程式異常終止,去掉解構函式裡delete的程式碼就沒有問題了。我是在工程中額外新增一個繼承自QTableView的Qt設計師介面類,並在ui_widget.h中,即widget.ui介面的原始碼中,將QTableView改為我這個新增的類的類名。在新建的類的cpp檔案中,註釋掉

,ui(new Ui::CTblView);
ui->setupUi(this);

兩行,但沒有註釋掉

delete ui;

原因估計和第一點一樣,ui定義了沒有使用,就直接delete,故而導致程式異常終止。也註釋掉這行就正常了。

三、指標物件沒有例項化就進行引用

如:

Dialog*d;
d=newDialog;
d->show();
如果忘了第二行的例項化,也會導致Qt程式異常終止

四、這一點是在別人的部落格裡看到的:↓

在main.cpp檔案裡,如果用MainWidget w;
w.show;在點選退出按鍵關閉視窗時,會出現“程式異常終止”的提示。
如果換成MainWidget *w = new MainWidget; w->show;  再次點選退出時,則不會出現這樣的警告。

還沒在實踐中見過這種情況,故而原因不詳。就當給大家個思路吧。

目前我只遇到這些情況導致程式異常終止,歡迎大家補充,共同分享,共同進步。