Qt程式異常終止的原因
阿新 • • 發佈:2019-02-01
一、在使用指標之前,要進行指標是否為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; 再次點選退出時,則不會出現這樣的警告。
還沒在實踐中見過這種情況,故而原因不詳。就當給大家個思路吧。
目前我只遇到這些情況導致程式異常終止,歡迎大家補充,共同分享,共同進步。