仕事で書いてたプログラムで
思った通りに動かない関数があって
その関数と全然違うところをいじると
正常に動作したりする場合があって
その原因が究明できなくて数日悩んでたんだけど
その原因がものすごく単純な勘違いで
そんな単純なミスをした自分がすごくなさけなくて
ガックリしてました。
一言でいうと「null終端が1文字ずれてました」
C言語の分かっている人向けにどんなミスだったのかを
似た様な内容の例をあげて説明すると、
配列str[]があったとして、そこに文字を4つ入れて
その直ぐ後ろにエンゼロを入れなきゃならなかったんだけど、
間違ってstr[5]にエンゼロを代入してました、という感じのミスです。
0から始まるから5文字目はstr[4]なのにね。
str[4]の初期値が丁度エンゼロになる場合は
正しく動作しちゃうせいで気づくのが遅くなりました。
いくら久しぶりのC言語だからって
本当にもう何やってんだか・・・
いやあ、でも原因が分かって一安心。
でも、安心する前に類似したミスがないか、ちゃんとチェックをしとこう、
とここに書くことで自分に言い聞かせるのであった。
ごろ~ 2010年03月23日(火)20時31分 編集・削除
まぁ単純なスペルミスはままあるw
そういう時は人に見てもらうと自分じゃわからない視点でみてくれるぞ