ctypes Zugriff auf Rückgabe von frame_t * initFrame(..)
Verfasst: Donnerstag 26. Juni 2008, 14:14
Hallo,
Ich habe eine C-Funktion die eine Speicher mit malloc initialisiert und einen Pointer auf den kreierten Speicher zurückgibt. Die Definition der Funktion sieht wie folgt aus:
Nun ist frame_t eine Struktur der Form:
Von dem frame_t habe ich eine Python Klasse erstellt:
Jetzt habe ich versucht davon einen Pointer zu erzeugen und den dann als restype zu setzen, aber irgendwie funktioniert das nicht:
Was mach ich denn hier falsch? In der Python Dokumentation wird das Beispiel mit einem c_char_p gezeigt:
http://docs.python.org/lib/ctypes-return-types.html
Wie sieht es denn mit dem kreierten Speicher aus? Kann ich den wieder von Python aus löschen? Dazu habe ich eine Funktion
Kann ich die Funktion jetzt einfach mit dem frameP Pointer aufrufen?
Danke für die Hilfe,
Alban
Ich habe eine C-Funktion die eine Speicher mit malloc initialisiert und einen Pointer auf den kreierten Speicher zurückgibt. Die Definition der Funktion sieht wie folgt aus:
Code: Alles auswählen
frame_t * initFrame(int len);
Code: Alles auswählen
typedef struct {
int N;
int *array;
} frame_t;
Code: Alles auswählen
class Frame_t(Structure):
_fields_ = [ ("N", c_int),
("array", POINTER(c_int))]
Code: Alles auswählen
frameP = POINTER(Frame_t)()
lib.initFrame.restype = frameP
http://docs.python.org/lib/ctypes-return-types.html
Wie sieht es denn mit dem kreierten Speicher aus? Kann ich den wieder von Python aus löschen? Dazu habe ich eine Funktion
Code: Alles auswählen
void freeFrame(frame_t * frame);
Danke für die Hilfe,
Alban