释放通过Python中的ctypes分配的内存

时间:2016-03-31 20:40:19

标签: python c windows ctypes glibc

我有一个基于 ctypes 的库,它包装了一个有时会分配需要释放的内存的C库。在Linux下,这很简单,因为常见的 glibc 功能已链接到该C库中,我只需在其上调用free()即可。但是,当我在Windows下访问第三方编译的库时,看起来相同的功能是不可用的。

ctypes.util.find_msvcrt()似乎很有希望,但即使我在Windows下运行,它也会返回。我不确定这是否意味着源DLL是使用Microsoft工具链之外的其他东西构建的。

所以,我留下的记忆力是自由的,没有明显的,简单的方法来做到这一点。有没有人有任何想法?

1 个答案:

答案 0 :(得分:5)

使用MSVCRT时,您需要确保使用来自同一CRT的相同的 free / malloc对(可以使您的程序运行多个CRT显示器)。您正在处理的库似乎已损坏 - 库应该有一个free包装器,它会调用free的正确版本。

换句话说,即使您确实设法找到某种MSVCRT free,也无法保证它是您想要的那种。

另见http://siomsystems.com/mixing-visual-studio-versions/