今日のバグ。

このプロジェクトに参加できて本当によかった。だんだん物事に驚かなくなってきた。大人に近づいてきたんだな、と思える。

冗談は置いておいて、いかに人が間違いやすいかということを感じることができる。GUIのデザインとか、そういう外向けの話だけではなく、共通のライブラリにおいてでも。どうやったら使う人が間違わないかを考えないといけない。

Cで引数に構造体のアドレスを渡すライブラリが用意されていたら、スタックにあるかヒープにあるかわからないし、メモリを解放するのは呼び出した方だと思うのが自然だとおもう。自分で出したものは自分で片付ける。ライブラリを作る人は、そのもらったアドレスからデータをもらって「あとで」使うつもりなら、相手が勝手にメモリを開放するだろうから、どこかにコピーしなきゃならないと思うに違いない。そうでなきゃ「おれが 後で不要になったタイミングで free() するから お前はするな!値も変えてくれるな!領域を放棄せずに管理だけ放棄しろ。俺が困るから」と目立つようにどこかに書くはず。自分のコードに malloc() が無くて free() だけ増えていったら不安になるじゃない?逆も同じだけど。
これがJavaなら?

双方とも必要な期間だけ、自分が手を下すまで不変なままでそこにあり続けると思っているから……というバグでした。毎回 new で作ったオブジェクトをライブラリに渡してほしかったのに、プロパティだけ変えて使い回していた、と。

勉強になるなぁ(;_;)