使用 ctypes 诊断在 Python 中访问的 Windows DLL 的内存泄漏

Diagnosing memory leak from Windows DLL accessed in Python with ctypes

我在 Python 中为一个商业软件编写了一个抽象层,该商业软件有一个 API 用于访问数据库后端。 API 通过 Windows DLL 公开,我的库是用 Python.

编写的

我的 Python 包加载应用程序提供的必要库,初始化它们,并在顶部创建几个 Python API。有简单包装 API 并使函数可从 Python 调用的低级函数,以及使与本机 API 的交互更高效的高级接口。

我遇到的问题是,当 运行 一个使用该库的守护进程时,似乎存在内存泄漏。 (几百个KB/s)我用了几个Python内存分析工具,也分别测试了每个函数,只有一个函数似乎泄漏了,但没有工具报告在执行过程中内存丢失该功能的。

在 Linux,我会使用 Valgrind 来确定供应商的库是否是罪魁祸首,但应用程序仅在 Windows 上运行。我如何诊断供应商是否有错,或者这是否是我访问他们图书馆的方式?

我最终用 C 编写了一个没有动态内存分配的程序来测试库。泄漏确实在我正在调用的函数之一中,而不是 Python 程序。