Ich habe eine Cython Datei test.pyx
mit dem folgenden Code genannt:Liste Konvertieren von Python verkohlen macht ** und wieder alle Elemente die gleiche in Cython
from libc.stdlib cimport malloc, free
def test():
x = ["a1", "a2", "a3"]
cdef char** y = <char**> malloc(len(x) * sizeof(char*))
for i in range(len(x)):
item_uni = x[i].encode("UTF-8")
y[i] = item_uni
z = []
for i in range(len(x)):
item = y[i]
z.append(item)
print(z)
Die Funktion scheinbar ["a1", "a2", "a3"]
gedruckt werden soll. Aber es gibt mir drei Instanzen von "a3"
statt:
>>> test()
[b'a3', b'a3', b'a3']
Warum ist das passiert?
Dank es hat funktioniert! Kannst du ein bisschen genauer erklären, auf was kostenlos angewendet werden soll? – Alex
@AlexanderWhatley In diesem Fall 'free (y [i])' nach 'z.append (item)' innerhalb der Schleife, und auch 'free (y)' nach 'print (z)'. –