昔作ったプログラムをちょっと改善してやろうと
思いました。
追加作業して実行したらエラーが発生します。
追加した部分はほんの数行でどう見つめてもエラー
を起こすようなものではありません。
昔作った時と今ではOSが変っています。
そのせいなのかと思いました。
コンパイル、リンクをする時に"何とかはありません
から無視します"とメッセージが出ています。
まず昔のOSと同一のパソコンのところへ行って
コンパイル、リンクしてみました。
その実行結果は同じでエラーが発生します。
OSの違いではないようです。
プログラムに途中結果を出力するルーチンを
埋め込んで原因を追究していきました。
そして分かった原因は、
strcpy(a,b)
これはbの文字列をaの文字列にコピーするという
関数です。
aは個数がを20個です。bは個数が21個です。
コピーすると1個はみだします。
壊してはいけないメモリー上にはみ出して書き込んで
しまってエラーを起こしたようです。
つまりはもともとおかしかったということです。
いままで正常だったのはたまたまはみ出したメモリーが
壊してもかまわない所だったのでしょう。
昔はメモリーはぎりぎり用意し、なるべく少し使うよう
心をくだいたものです。
今はそんなことに気を配る必要は全然ありません。
無駄にたくさん使う必要はありませんがたっぷり用意
しておいたらいいのです。
メモリーを壊してエラーを起こすもののデバッグほど
やっかいなものはありません。
個数をたくさん用意したら正常になりました。
(デバッガーを使えばエラー箇所が一発でわかるという
声が聞こえてきそうですがちょっと使えないソフトなもので。)
思いました。
追加作業して実行したらエラーが発生します。
追加した部分はほんの数行でどう見つめてもエラー
を起こすようなものではありません。
昔作った時と今ではOSが変っています。
そのせいなのかと思いました。
コンパイル、リンクをする時に"何とかはありません
から無視します"とメッセージが出ています。
まず昔のOSと同一のパソコンのところへ行って
コンパイル、リンクしてみました。
その実行結果は同じでエラーが発生します。
OSの違いではないようです。
プログラムに途中結果を出力するルーチンを
埋め込んで原因を追究していきました。
そして分かった原因は、
strcpy(a,b)
これはbの文字列をaの文字列にコピーするという
関数です。
aは個数がを20個です。bは個数が21個です。
コピーすると1個はみだします。
壊してはいけないメモリー上にはみ出して書き込んで
しまってエラーを起こしたようです。
つまりはもともとおかしかったということです。
いままで正常だったのはたまたまはみ出したメモリーが
壊してもかまわない所だったのでしょう。
昔はメモリーはぎりぎり用意し、なるべく少し使うよう
心をくだいたものです。
今はそんなことに気を配る必要は全然ありません。
無駄にたくさん使う必要はありませんがたっぷり用意
しておいたらいいのです。
メモリーを壊してエラーを起こすもののデバッグほど
やっかいなものはありません。
個数をたくさん用意したら正常になりました。
(デバッガーを使えばエラー箇所が一発でわかるという
声が聞こえてきそうですがちょっと使えないソフトなもので。)