3

Pygletのメモリリークを修正しようとしています。ole32.CreateStreamOnHGlobalによって割り当てられたIStreamオブジェクトが解放されないため、win32でのみ発生します。

ここをクリックすると、Pygletトラッカーで問題#552を見つけることができます。

ソースコードでわかるように、ストリームのリリースはTODOアイテムとして省略されています。

行204のコメントには、私の質問も含まれています。IUnknown:: Release onstreamを呼び出す方法は?

ストリームは142行目に割り当てられます。pygletは外部の依存関係に依存していないため、pywin32を使用できないと思います。ストリームオブジェクトについてPython側で知っているのは、gdiplus.pyの53行目だけです。

LPSTREAM = c_void_p

だから、これが私の背景です-状況と制限。さて、私の質問-もう一度。ポインタしかない場合、IStream :: Releaseを呼び出すにはどうすればよいですか?5秒ごとに異なる画像を読み込むという長時間のプロセスがありますが、それは私にとって問題のようです。私はC/C ++を理解でき、プログラミングも時々行いますが、決してwin32apiの専門家ではありません。ヘルプ!

4

2 に答える 2

1

おそらくこれは役に立ちます、それは同じ問題に関係しています。

http://bytes.com/topic/python/answers/23946-closing-excel-application

于 2012-02-06T11:47:40.593 に答える
1

pygletには、IUnknown(pyglet.com、dsoundオーディオドライバーで使用)とインターフェイスするCOMモジュールが含まれています。

このモジュールは、GDI+インターフェイスが作成されたときには存在していませんでした。

Cインターフェイスの代わりにCOMオブジェクトを使用するように画像の読み込みを書き直すか、IUnknownのthisポインターとして使用しているsteamポインターを使用することができます。

于 2012-02-08T21:27:49.413 に答える