Thanks Stefan!  That's what I suspected.  The fast reply is much appreciated
(as is Cython in general :))

On Wed, Apr 29, 2009 at 9:55 AM, Stefan Behnel <[email protected]> wrote:

>
> Jack Stahl wrote:
> > Quick question.  If I want to return a char * from Cython to Python as a
> > string, should I be freeing the original char * or not?  In other words,
> > when Cython does the implicit conversion from char * ---> string, does it
> > create a Python object and strcpy the char * into its data, or does it
> copy
> > the pointer?
>
> It creates a copy that is owned by the str/bytes object.
>
>
> > Here's some code to make this clearer:
> >
> > cdef class MyStringHolder:
> >
> >   cdef char *my_str
> >
> >   ...
> >
> >   cpdef add_to_set(object set):
> >     // Is this necessary or is this a memory leak?
> >     cdef char * str_cpy = <char*>malloc(strlen(my_str) + 1)
> >     strcpy(str_cpy, my_str)
> >
> >     // Should this just be set.add(my_str)?
> >     set.add(str_cpy)
>
> Yes, passing my_str should be enough (unless what you want is actually a
> unicode string, in which case you need to decode it).
>
> Stefan
>
> _______________________________________________
> Cython-dev mailing list
> [email protected]
> http://codespeak.net/mailman/listinfo/cython-dev
>
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to