[Python-de] Extension

Bernd Nawothnig Bernd.Nawothnig at t-online.de
So Apr 1 10:47:21 CEST 2012


On 2012-03-27, Dietmar Schwertberger wrote:

> Siehe http://docs.python.org/c-api/list.html.
> PyList_SetItem stiehlt die Referenz, was hier aber OK ist, da
> Py_BuildValue ein neue Referenz liefert und auch die Referenz auf das
> ursprüngliche Objekt erhöht.
> PyList_Append erhöht den Zähler, so daß du den Count auf den
> Rückgabewert von VLP_asPyList selbst reduzieren musst. Aktuell
> hast du also ein Speicherleck.

Ah, verstanden, gefixt und Danke für die Erklärung.

> Wenn du zuerst eine Liste mit der richtigen Länge anlegst und dann
> alles mit PyList_SetItem füllst, wirds auch noch ein bischen schneller.

Die inneren Listen erstelle ich bereits so, aber bei der äußeren
würde das den C-Code unnötig verkomplizieren, denn ich kenne die
wirkliche Länge erst ganz zum Schluss. Und auch das, was ich dann in C
entsprechend machen müsste, wäre natürlich nicht kostenfrei. Nein, das
ist unter dem Strich so schon die sauberste und auch naheliegendste
Lösung.




Bernd

-- 
"Die Antisemiten vergeben es den Juden nicht, dass die Juden Geist
haben - und Geld." [Friedrich Nietzsche]


Mehr Informationen über die Mailingliste python-de