情報詳細Q.HALCON13(C#.NET、Windows10)でCopyImageを実施した際、#4051エラーが発生しました。#4051: Image data management: object has been deleted already in operator copy_imageClearObjでこのエラーが発生する事は確認できましたが、本ライブラリではデストラクタ以外では使用しておりません。ClearObjを使用する以外で、どのような場合に発生しまするか、ご教示お願いできないでしょうか。A.CopyImageの前にnullチェックをされておりますが、nullチェックだけではhImageのオブジェクトの中身が空か確認することができかねます。そのため、nullチェックに加え、hImage.IsInitialized()の戻り値がfalseかtrueかご確認いただけますでしょうか。これにより、オブジェクトが既に削除されているか確認することができるかと存じます。ClearObj()を行うことで、HALCONが有するメモリ内部を解放することができますが、ソフトウェア上ではHALCON側がメモリを確保しているため、IsInitialized()にてfalse判定になったと考えられます。そのため、ClearObj()にてオブジェクトを初期化した際には、HImageを改めてnullで宣言していただく二重チェックを提案いたします。>ClearObjを使用する以外で、どのような場合に発生するか、ご教示お願いできないでしょうか。CopyImage()はコピー元画像のメモリにアクセスし、新しい画像のためにコピーしメモリを新しく割り当てます。今回のエラーの内容から、なにかしらの影響によりコピー元のメモリが解放されたため発生したと考えられます。HALCONオペレータからオブジェクトのメモリの解放を行うのは、ClearObj()しかありません。そのため、疑似的にエラーを再現することができております。また、HALCON/.NET (C#/VB)ではメモリの解放を行うにはDisposeを実施していただく必要があります。ClearObj()は、HALCON/Cのみで使用し、そのほかの言語においては適切なデストラクタを使用しなければなりません。原則として、メモリの初期化や解放が行われない限り、#4051のエラーは発生しないと考えております。今回の実機環境ではどちらも実施していないことから、ハードウェア構成がエラーの要因の可能性が考えられます。憶測にはなりますが、ご使用中のPCのメモリの一部が故障している可能性があります。以上のことから、#4051が発生する前にエラーチェックする方法はなく、try-catch構文にて対応していただければと存じます。添付ファイルタイトルHALCONエラー #4051URL 名000008963公開状況公開済み検証状況公開済み