【发布时间】:2011-06-27 18:02:43
【问题描述】:
我需要从 python 调用 C 库中的一个函数,这将释放()参数。 于是我尝试了create_string_buffer(),但是好像这个缓冲区稍后会被Python释放,这会使缓冲区被释放两次。
我在网上读到 Python 会对缓冲区进行引用计数,并在没有引用时释放它们。那么我怎样才能创建一个python以后不关心的缓冲区呢?谢谢。
示例:
我使用:lib = cdll.LoadLibrary("libxxx.so") 加载 dll,然后使用:path = create_string_buffer(topdir) 和 lib.load(path) 调用该函数。但是,libxxx.so 中的加载函数会释放它的参数。而后来“路径”会被 Python 释放,所以它被释放了两次
【问题讨论】:
-
发布您的示例代码以及它有什么问题。问题不清楚。
-
我加载 dll 时使用:
lib = cdll.LoadLibrary("libxxx.so"),然后调用函数时使用:path = create_string_buffer(topdir)和lib.load(path)。但是,libxxx.so 中的加载函数会释放它的参数。后来“路径”会被 Python 释放,所以它被释放了两次。 -
为了让人们可以更轻松地回答您,问题应该包含所有需要的信息 - 编辑问题以添加它,而不是将其放在人们会错过的评论中。
标签: python c buffer ctypes free