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

Dus*_*rea 1 c python windows ctypes glibc

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

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

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

Mar*_*erg 5

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

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

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