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
