Folgendes Problem: Ich lese einen Datenstream mittels einer Software/Hardware aus. Der Hersteller hat dafür ein
Python Interface bereitgestellt. Soweit so gut, wenn ich einen Dauertest fahre hat der Python exe Prozess binnen
einer Nacht ca. 1GB, sprich Systemabsturz. Auf Nachfrage beim Hersteller wurde mir der Quellcode geschickt, welcher
dann zu einer pyd Datei kompiliert wird. Aus diesem Quellcode stammt folgender Codeausschnitt:
Code: Alles auswählen
....
piValues = PyMem_Realloc(piValues, sizeof(int) * iCount);
dimensions[0] = iCount;
if(!(objArray = (PyArrayObject *) PyArray_FromDimsAndData(n_dimensions, dimensions, type_num, (char *) piValues)))
{
PyMem_Free(piValues);
return NULL;
}
return PyArray_Return(objArray);
(piValues) erzeugt. Für den Fall, dass der Array nicht erzeugt werden konnte werden die piValues freigegeben und return.
Im positiven Fall wird der Array zurückgegeben, die piValues allerdings nicht freigegeben. Dazu meine Frage: Ist es möglich,
dass der Speicherauflauf daher kommt, dass piValues im positiven Fall der Speicher nicht freigegeben wird, oder wäre im
Falle einer Speicherfreigabe von piValues auch der Array "kaputt"?
Danke für eure Hilfe.