I am starting to experiment with ctypes. I have a function which returns a
pointer to a struct allocated in heap memory. There is a corresponding free
function for that sort of struct, e.g.:
from ctypes import *
cdll.LoadLibrary("libthing.so")
c_thing = CDLL("libthing.so")
class THING(Structure):
_fields_ = [("name", c_char_p),
("value", c_int)]
get_thing = c_thing.get_thing
get_thing.restype = POINTER(THING)
free_thing = c_thing.free_thing
So I call get_thing() and get back this ctypes wrapper for a pointer to a
thing. I can extract the name and value elements from the thing instance
just fine:
thing_p = get_thing()
thing = thing_p.contents
print thing.name, "=", thing.value
Now I need to call free_thing. What do I pass it? thing_p? Some attribute
of thing_p? Something else altogether? The ctypes module docs seem to be
strangely silent on the question of freeing heap memory which you've
received from the underlying library's functions.
Thanks,
Skip
--
http://mail.python.org/mailman/listinfo/python-list