首頁>Club>
10
回覆列表
  • 1 # 大小馬哥

    死迴圈指的是迴圈條件永遠成立,迴圈體中的程式碼會不斷重複執行,永不退出。最簡單的一個死迴圈的例子:

    while(1)

    {

    //要執行的程式碼

    }

    一般在多執行緒的程式程式碼中,是需要這樣的死迴圈的,比如建立一個執行緒,迴圈不斷接收網路上過來的訊息進行處理,不需要退出,由於是多執行緒,該死迴圈不會影響其他執行緒,但是要注意用sleep或者usleep讓程式每迴圈一次就休眠一下,避免佔用太高CPU。上面講到的是正常的期望的死迴圈,有一些迴圈我們本意是讓其執行一定次數就退出,但由於程式碼寫得有問題,導致迴圈條件永遠成立,就變成了死迴圈,這種情況會導致整個程式阻塞在這裡,出現嚴重BUG,我舉一個例子:

    char i = 0;

    while(i < 200)

    {

    //要執行的程式碼

    i++;

    }

    這個程式碼的本意是想迴圈執行200次後就退出,但實際上是個死迴圈,永遠不會退出,因為i是個char型別,其取指範圍是-128~127,無論怎麼++都不會變成大於等於200的一個數。我們在寫迴圈程式碼時,要仔細分析檢查迴圈條件,看是否一定會退出,避免出現類似這種非期望的死迴圈。

  • 2 # 比特幣交易員

    死迴圈是程式執行一段程式碼,永遠也不會退出,一直在這段程式內迴圈執行。

    如何避免死迴圈?

    1、首先你要知道,迴圈執行一段程式,你想要退出這段程式,你需要滿足一個判斷條件,當這個條件不滿足時就會退出該段程式;

    2、在設定迴圈的退出條件時,一定要注意這個條件會不會永遠都在執行,所以在寫迴圈條件的時候,一定要小心;

  • 3 # TonyDeng

    任何程式都可能出現死迴圈,不是C語言特有的。

    出現死迴圈的可能性很多,除了常見和較低階的編碼錯誤,還有不可控的外部條件引起,比如讀磁碟遇到壞區反覆讀也陷入死迴圈。

    避免死迴圈的方法,只能是編寫程式碼時考慮周到,時刻想著如果死迴圈應怎麼處理,在程式碼埋入預防措施,比如用時鐘中斷計時或訊息之類(此時寧願執行慢也要防跳不出陷阱),跟程式設計師的經驗有關,沒有絕對有效的方法。

    不是所有死迴圈都是有害的,有些業務必須處於死迴圈中等待事務觸發,基於事件的程式就往往如此,像網路通訊,肯定要死迴圈不斷檢測通訊埠有沒有資料傳入。

  • 中秋節和大豐收的關聯?
  • 春耕正在進行時,雜糧種植該如何選擇優良品種?