ich habe mal eine frage zur Auflösung der zyklischen Abhängigkeiten und damit verbundenen Speicherfreigabe. Leider wird nämlich bei mir der Speicher nicht freigegeben (jedenfalls glaube ich das es so ist). Folgende Funktionen habe ich implementiert:
Code: Alles auswählen
static int
My_traverse(MyObject *self, visitproc visit, void *arg) {
unsigned int i;
int res = 0;
for (i = 0; (i < self->len) && (res == 0); ++i) {
res = visit(self->e[i], arg);
PySys_WriteStdout("Res = %d\n", res);
}
return res;
}
static int
My_clear(MyObject* self) {
unsigned int i;
PySys_WriteStdout("Clear");
for (i = 0; i < self->len; ++i) {
Py_CLEAR(self->e[i]);
}
return 0;
}
static void
My_dealloc(MyObject *self) {
My_clear(self);
Py_TYPE(self)->tp_free((PyObject*) self);
PySys_WriteStdout("%s", "fertig\n");
}
Hat jemand vielleicht einen Tip für mich woran es liegen kann?
Gruß
Jonny
P.s. Im TypeObject sind dealloc, traverse und clear registriert und Py_TPFLAGS_HAVE_GC ist gesetzt.