2001/10/29 [月]
世間では、Win9x などと比べると頑強であるという評判のある Win2K ですが、なんと次のような簡単なプログラムをコンソールで実行すると Win2k がシステムごと落ちます。はっきり言って間抜けです。なおこの情報は NetNEWS で情報交換されていたものです。
main(){while(1)printf("\t\b\b");}
これは、別に C 言語だけではなく、コンソールに "\t\b\b" が出力されればよいので他の言語でも OK です。どうしてこのようなことがおこるのでしょうか。Win2K では、\t でカーソルが 4 文字進んだ後、\b で \t の 4 文字が戻り、さらに \b があると 4 文字戻るようです。不思議なことにその時、行の先頭であってもこの場合に限り一つ前の行に戻るようです。もし現在のカーソルがコンソールの先頭にあった場合にこれがなされると、当然おかしな領域を指すことになります。その結果システムが落ちてしまうのではないかというのです。ちなみに、Win9x では問題ありません。
main(){while(1)printf("\t\b\b");}
これは、別に C 言語だけではなく、コンソールに "\t\b\b" が出力されればよいので他の言語でも OK です。どうしてこのようなことがおこるのでしょうか。Win2K では、\t でカーソルが 4 文字進んだ後、\b で \t の 4 文字が戻り、さらに \b があると 4 文字戻るようです。不思議なことにその時、行の先頭であってもこの場合に限り一つ前の行に戻るようです。もし現在のカーソルがコンソールの先頭にあった場合にこれがなされると、当然おかしな領域を指すことになります。その結果システムが落ちてしまうのではないかというのです。ちなみに、Win9x では問題ありません。
by seclan