記事一覧

大ショックでした

仕事で書いてたプログラムで
思った通りに動かない関数があって
その関数と全然違うところをいじると
正常に動作したりする場合があって
その原因が究明できなくて数日悩んでたんだけど
その原因がものすごく単純な勘違いで
そんな単純なミスをした自分がすごくなさけなくて
ガックリしてました。

一言でいうと「null終端が1文字ずれてました」

C言語の分かっている人向けにどんなミスだったのかを
似た様な内容の例をあげて説明すると、
配列str[]があったとして、そこに文字を4つ入れて
その直ぐ後ろにエンゼロを入れなきゃならなかったんだけど、
間違ってstr[5]にエンゼロを代入してました、という感じのミスです。

0から始まるから5文字目はstr[4]なのにね。
str[4]の初期値が丁度エンゼロになる場合は
正しく動作しちゃうせいで気づくのが遅くなりました。

いくら久しぶりのC言語だからって
本当にもう何やってんだか・・・
いやあ、でも原因が分かって一安心。
でも、安心する前に類似したミスがないか、ちゃんとチェックをしとこう、
とここに書くことで自分に言い聞かせるのであった。