Thank you for your advice.

Regards

Le 1 févr. 09 à 00:28, Dag Sverre Seljebotn a écrit :

> Jean-Alexandre Peyroux wrote:
>> Hello,
>>
>> I think i did not understand the handling character string. This is  
>> an
>> example :
>>
>> user.pyx :
>>
>> cdef class User:
>>    def __init__(self, char* name):
>>        self.cname = name
>>
>>    cpdef printName(self):
>>        print "My name is %s" % self.cname
>>
>> user.pxd :
>>
>> cdef class User:
>>    cdef readonly char* cname
>>
>>    cpdef printName(self)
>>
>>
> <snip>
>> In [5]: u.cname
>> Out[5]: '_3'
>>
>> I do not understand. My string is completely random, as if it was
>> pointing in the wrong location of memory.
>> I missed step ?
>
> This is expected. When you do "self.cname = name", then you get a
> pointer to the character buffer inside the "name" string object. Then,
> "name" goes out of scope and is deallocated, along with its memory,  
> and
> perhaps filled with something else.
>
> Moral? Only use conversion to char* when you really need it because  
> you
> call C code or similar, and also then you need to hold on to the
> corresponding Python string as well.
>
> -- 
> Dag Sverre
> _______________________________________________
> 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