ctypes: delay conversion from c_char_p to string

Thomas Heller theller at ctypes.org
Sat Apr 24 08:57:06 EDT 2010


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




More information about the Python-list mailing list