配列の境界チェックは重要

コンパイラ言語の危険なところは気づかないうちに配列境界を越えることですね
これが配列を超えてコードを壊してくれれば暴走するので気づくんですが、
怖いのは、隣の違う配列の値を参照してたり、書き換えてたりする場合。


この配列が学習要素だったりすると、一部が変なだけで全体ではJは下がったりすると
さっぱり気づかなかったりします。
危険なのが、途中から配列の要素を広げたり小さくした場合で、
修正したつもりが、部分的に境界超えのコードが残ってたりします。



この前のCSA例会で、GPSの金子さんのスライドに
地味ですが、配列宣言時に境界を与えて宣言して、境界チェックもできる手法が1ページありました。
転ばぬ先の杖で、こういうことが実はたいへん重要なのではないかと思います。
普通のC言語的なアプリでも、
配列参照の部分は境界チェックのASSERTを入れまくれば同じことはできるんでしょうけど、
得てして面倒なので、手を抜いたりしますので、
人間は信用できません。強制的にチェックできる仕組みを入れることは大切でしょう。


きっと、misakiにはまだどこかに配列境界越え参照が残っている……