ich habe mal eine Frage. Ich habe mir eine kleine Klasse in Python geschrieben, die mir eine XML-Datei einliest und daraus ein Dictionary erzeugt. Diese Klasse habe ich jetzt in C verwendet. Ich laufe dort dann mit einem Iterator durch das Dictionary und hole mir wie folgt die Daten in eine C-Variable
Code: Alles auswählen
char * cVar;
PyObject * pVar;
...
pVar = PyDict_GetItem(values, key);
PyArg_Parse(pVar, "s", &cVar);
...
Mein Verständnis der Funktion PyArg_Parse war so das hier aus dem Python-Object ein neuer! (irgendwo wird ein malloc durchgeführt) String erstellt wird. Dies scheint aber wohl nicht gemacht zu werden, da wenn ich nach dem "PyArg_Parse(pVar, "s", &cVar)" ein Py_DECREF(pVar) ausführe, bekomme ich ein Segmentation fault, wenn ich wieder auf meine Baumstruktur zugereife. Ich vermute das es daran liegt das eben pVar und cVar auf einen Speicherbereich zeigen und ein free auf pVar sich somit auch auf cVar auswirkt.
Jetzt also die eigentliche Frage. Ist das so? Was macht denn PyArg_Parse() intern wirklich? Kann mir da jemand einen Tip geben?? Vielen vielen Dank im Voraus.
Gruß
Jonny