
*-- To Tell The Truth --*
Cruz
MAIL
HOME
|
 |
2001年06月27日(水) ■ |
 |
空は海よりも青く・・・ |
 |
梅雨はどこへいったのか。 毎日晴れすぎ&暑すぎ。 溶けるのは時間の問題。
一昨日、発見したバグはなんとかクリア。 これが本当になんとか。 いろいろ試行錯誤した挙句できたのでOKとしたまで。 実は、なぜこれでいいのか自分でもわからない箇所がいくつか・・・。
その1つは、strcpy(p, dataline);がいっぱい やってることは、固定長のデータをオフセットごとに項目バラして変数に格納するだけ。 固定長データはconstで持ってきているので、 char *p = new char [strlen(dataline)]; と定義したpに代入してからバラしにかかっているのだが、 1項目の代入を済ませた後、再度strcpy(p, dataline);してやらないと、 pに入っている固定長データがぶち切れていて先(これから取得する項目分)のデータがない。 それも、途中項目まではデータが存在するので必ず1項目ずつに・・・というわけではないのだ。 要はデータが桁落ちしているように見える。 一か八かで、1項目処理するごとにstrcpy・・・をしたら、ちゃんとできた。 うーん、こんなことでいいのだろうか?
もう1つはdelete [] p; 先ほどの話の中で出てきたとおり、pをnewでメモリ割り当てを行っている。 だから、使い終わったらdeleteで開放じゃん・・・と思ったが、 これをすると実行でコケる。 これも一か八かで、え〜い!エラーになるなら取ってしまえ〜!!とやったら、すんなり動いた。 本にだってnewしたらdeleteで開放って書いてあるじゃん。 この例外はなに??
以上、疑問が残るバグ解決でした。
|
|