2016-03-11 18 views
0

打破了我的程序中我犯了一個明顯的錯字從生成的窗口中無限循環

for(int i = 0; i<mNoOfCores; i+3) 

,而不是

for(int i = 0; i<mNoOfCores; i++) 

不幸的是,在環我產生QT5窗口。所以我的Ubuntu系統完全被拒絕了,我只能在重啓後重啓。 (鼠標響應迅速,鍵盤也可能如此)。有更好的方法嗎?或者,以這種方式,我可以拒絕我的操作系統從應用程序?

+3

對我而言,你不是很清楚你在問什麼。當然,更好的方法是避免無限循環(特別是當您在該循環內創建窗口時)。 – user463035818

回答

1

編譯器無法事先通知您無限循環。這在許多地方被討論,here,here,here

你可以做的就是使用簡單的「雙重檢查」來防止你掛上操作系統。例如:

int totalNoWindowsCreated = 0; // keep track of windows created OK 
for(int i = 0; i<mNoOfCores; i+3) 
{ 
    // Create window 
    totalNoWindowsCreated++; // If created OK 
    assert(("Bug !", totalNoWindowsCreated <= mNoOfCores)); // Check 
} 

更新:當然,你可以犯錯的斷言狀態,在這種情況下,只是休息一下,喝咖啡:)。

+0

不應該斷言檢查'totalNoWindowsCreated

+2

@ AlfieJ.Palmer如此之快的雙重檢查可以變成一個雙重錯誤;) – user463035818

+0

@ tobi303謝謝,我的壞... :) – vcp