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



我有一个基于ctypes的库,它封装了一个C库,该库有时会分配需要释放的内存。在Linux下,这很容易,因为常见的glibc功能已链接到该C库中,我只需在其上调用free()即可。然而,当我在Windows下访问第三方编译的库时,似乎无法使用相同的功能。

ctypes.util.find_msvcrt()看起来很有希望,但它返回None,即使我在Windows下运行。我不确定这是否意味着源DLL是用微软工具链以外的东西构建的。

所以,我只剩下记忆可以自由发挥,没有明显的、简单的方法。有人有什么想法吗?

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

换句话说,即使你确实找到了某种MSVCRT free,也不能保证它就是你想要的。

另请参阅http://siomsystems.com/mixing-visual-studio-versions/

最新更新