Brendan Miller schrieb: > I have a function exposed through ctypes that returns a c_char_p. > Since I need to deallocate that c_char_p, it's inconvenient that > ctypes copies the c_char_p into a string instead of giving me the raw > pointer. I believe this will cause a memory leak, unless ctypes is > smart enough to free the string itself after the copy... which I > doubt. > > Is there some way to tell ctypes to return an actual c_char_p, or is > my best bet to return a c_void_p and cast to c_char_p when I'm reading > to convert to a string?
Yes, there is. When you create a subclass of c_char_p (or any other 'simple' ctypes type like c_wchar_p or even c_int and alike) then the automatic conversion to native Python types like string, unicode, integer is not done. The function will return an instance of that specific class; you can retrive the value via the .value property and deallocate the resources in the destructor for example. -- Thanks, Thomas -- http://mail.python.org/mailman/listinfo/python-list