無限ループ
読み:むげんるーぷ
外語:infinite loop

 半永久的に同じ場所でループを続ける状態。意図的な場合と、プログラムバグの場合とがある。
目次

プログラム

挙動
 プログラムにおいては、待機などの目的のために意図的に組み込まれることもあるが、いわゆるバグのため意図せずに無限に同じ箇所を回ってしまうこともある。
 後者の場合、ループの条件式に不都合があるため、プログラムがループから脱出できずプロセスが停止するような症状を示す。
 無限ループの状況によってはスタックオーバーフローバッファーオーバーフローを起こすこともある。

無限ループさせる
 回数のあるループと無限ループは、明確に区別されるべきである。
 そこで例えば、次のようなマクロを定義する。
 #define INFINITE_LOOP for(;;)
使用例1

INFINITE_LOOP { printf("hello, world\n"); }

 終わるときは、中でbreak文を実行すればよい。
使用例2

printf("hello, world\n"); INFINITE_LOOP;

 表示したあと、停止する。

データ通信
 データ通信などでは、同じパケットフレームが、一定の場所を行ったり来たりしてしまう状態をいう。
 当然、このようなことが発生すると問題なので、パケットやフレームにホップ数TTLと呼ばれる「寿命」を用意することもある。

再検索