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

Reply via email to