シャットダウン時に、特定のオブジェクトの3つがリークしているというメモリリークメッセージが表示されます。ただし、これには2つの問題があります。
それは断続的にのみ発生します。プログラムを実行し、まったく同じ一連の手順を実行して(データファイルを開き、表示して、再度シャットダウンする)、メッセージが表示される場合と表示されない場合があります。これらのコードパスに沿って、random()またはその他の「非決定論的」ロジックを呼び出す必要はありません。
コードレビューによると、報告されたメモリリークは不可能です。オブジェクトは特定のクラス内でのみ作成され、そのクラスのデストラクタ内で適切に解放されます。(そして、親クラスの3つ以上のオブジェクトをインスタンス化します。また、クリーンアップ中に例外が発生することはありません。)
このクラスのコンストラクタとデストラクタにトレース出力を追加すると、メモリマネージャが別の方法で報告している場合でも、作成されたすべてのオブジェクトが破棄されていることがわかります。したがって、これは誤検知であると結論付けることしかできません。ただし、コンストラクターに「RegisterUnexpectedMemoryLeak(self)」を追加すると、メッセージが消えます。
誰かが以前にこのようなものを見たことがありますか?何がそれを引き起こしているのか考えていますか?オブジェクトがリークしていない可能性があると確信しているので、代わりに何が起こっているのでしょうか。