打破了我的程序中我犯了一個明顯的錯字從生成的窗口中無限循環
for(int i = 0; i<mNoOfCores; i+3)
,而不是
for(int i = 0; i<mNoOfCores; i++)
不幸的是,在環我產生QT5窗口。所以我的Ubuntu系統完全被拒絕了,我只能在重啓後重啓。 (鼠標響應迅速,鍵盤也可能如此)。有更好的方法嗎?或者,以這種方式,我可以拒絕我的操作系統從應用程序?
打破了我的程序中我犯了一個明顯的錯字從生成的窗口中無限循環
for(int i = 0; i<mNoOfCores; i+3)
,而不是
for(int i = 0; i<mNoOfCores; i++)
不幸的是,在環我產生QT5窗口。所以我的Ubuntu系統完全被拒絕了,我只能在重啓後重啓。 (鼠標響應迅速,鍵盤也可能如此)。有更好的方法嗎?或者,以這種方式,我可以拒絕我的操作系統從應用程序?
編譯器無法事先通知您無限循環。這在許多地方被討論,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
}
更新:當然,你可以犯錯的斷言狀態,在這種情況下,只是休息一下,喝咖啡:)。
不應該斷言檢查'totalNoWindowsCreated
@ AlfieJ.Palmer如此之快的雙重檢查可以變成一個雙重錯誤;) – user463035818
@ tobi303謝謝,我的壞... :) – vcp
對我而言,你不是很清楚你在問什麼。當然,更好的方法是避免無限循環(特別是當您在該循環內創建窗口時)。 – user463035818