OpenBabelでOBMolのインスタンスをコピーする時、デバッグに苦労する現象に遭遇しました。
OBMol mol1 = new OBMol();
OBMol mol2 = new OBMol();
(この間、mo1,2lの操作をする)
mol1 = mol2;
この代入でエラーは出ませんが、mol1のインスタンスは非常に不安定で、突然消えたりします。
これは、mol1のインスタンスのメモリー領域がmol2で上書きされることで、(おそらく)mol1のポインターが確保されないまま操作されていることによります。たちの悪いことに、この操作でのエラーは何も出ません。
mol1にmol2を上書きする場合は
mol1 = new OBMol(mol2)
として、mol1をちゃんと初期化してmol2をコピーしましょう。
これが原因で10日ほど悩みました。
0 件のコメント:
コメントを投稿