1. 程式人生 > >Qt 跨執行緒初始化變數,程式奔潰(Error - RtlWerpReportException failed with status code :-1073741823.)

Qt 跨執行緒初始化變數,程式奔潰(Error - RtlWerpReportException failed with status code :-1073741823.)

出現使用了未使用的記憶體問題,一般是彈出以下視窗:
這裡寫圖片描述
以及輸出視窗會顯示以下內容:

Error - RtlWerpReportException failed with status code :-1073741823. Will try to launch the process directly
Error - Failed to create the process C:\Windows\system32\WerFault.exe
Error - StartCrashVertial failed

首先可以明確出現該問題的原因是使用了未初始化的指標,應該要查詢在哪裡使用了野指標,然後解決即可。

而比較麻煩的情況是跨執行緒初始化變數問題,利用訊號槽對另一個執行緒的變數進行初始化,而緊接著又對其進行connect,由於執行緒執行順序問題,如果一個物件未被初始化而被connect,一般除錯下會跳進qobject中報錯,並且在報錯中可以看到是關於connect的。

解決辦法:

通過訊號槽在A執行緒中對B執行緒的變數初始化時,在connect函式的第5個引數使用Qt::BlockingQuequeConnection