我正在尝试修复 Pyglet 中的内存泄漏。它只发生在 win32 上,因为它涉及 IStream 对象,由 ole32.CreateStreamOnHGlobal 分配,未被释放。
您可以通过单击此处在 Pyglet 跟踪器上找到问题 #552 。
正如您在源代码中看到的那样,流的发布被遗漏为 TODO 项:
第 204 行的评论甚至包括我的问题:How to call IUnknown::Release on stream?
流在第 142 行分配。由于pyglet不依赖外部依赖,我认为我不能使用pywin32。我们在 python 端所知道的关于流对象的所有信息都是gdiplus.py 第 53 行
LPSTREAM = c_void_p
所以,这就是我的背景——情况和局限性。现在,我的问题 - 再次。如果我只有一个指针,我如何调用 IStream::Release?我有一个长时间运行的过程,每 5 秒左右加载不同的图像,看起来这对我来说是个问题。我可以理解 C/C++,我什至偶尔会做一些编程,但无论如何我都不是 win32 api 专家。帮助!