« 地震と停電 | メイン | 停電と冷凍庫 »

2005年8月23日

バグ?

カテゴリー: [プログラミング]

昨日,Eclipse 3.0.1 と JDK 1.4.2_03 でプログラムを書いていたとき,変な現象に遭遇しました.

Object[] array = new ...;
for(int i=0; i < **; ++i){
    ...
}
for(int i=0; i < array.length; ++i){
    array[i] ...
}

本来のコードとはいろいろ違いますが,こんな感じで,forを2つ連続で使っている部分があって,2番目のループで配列にアクセスしていたのですが,ここで,ArrayIndexOutOfBoundsException が起きました.しかし,配列の長さ以上にループしないわけですから,逆立ちしたって配列をオーバーすることは無いはずです.
わけが分からなかったのですが,なんとなく,2番目のforループの'i' を'j'に変えたら,動くようになりました.
しかし,何がどうなって,2番目のforの条件を無視して突っ走ったのか.

コンパイラが悪いのか,Eclipseのデバッガの関係なのか,さっぱりわかりません.
本当は,ちょっと調べてみようかと思ったんですが,再現できません.
再現したからといって,原因が分かるわけではないですが.

再現しないこということは,たまたま何か条件がそろっただけなんでしょう.

まあ,人が作った物ですから,たまには変なことも起きますか.

投稿者 shingo : 2005年8月23日 18:08

トラックバック

このエントリーのトラックバックURL:
http://isolinear.info/cgi-bin/mt/mt-tb.cgi/143

コメント

コメントしてください

コメントスパム等の対策のために,大量のURLを含むコメント,古いエントリーに対するコメント,連続したコメントなどは,一旦保留されます.




保存しますか?