[Python] ctypes e puntatore ad un array di stringhe

Marco Giusti marco.giusti a posteo.de
Mar 18 Nov 2014 15:33:10 CET


Salve a tutti,

con ctypes vorrei richiamare una funzione C che ritorna **char. La
funzione in causa assegna la memoria per le singole stringhe e per
l'array stesso e lascia al chiamante l'onere di liberarla. Sebbene con
ctypes riesca ad accedere ai singoli valori, non riesco ad accedere
all'area di memoria puntate e di conseguenza non riesco a liberarla.
Questo è quanto ho fatto fino ad ora:

    def getlist():
        envs = _mylib.getlist()
        ret = []
        i = 0
        env = envs[i]
        while env is not None:
            ret.append(env)
            i += 1
            env = envs[i]
		# in realta' non sono sicuro di questa riga
        _free(envs)
        return ret

Ho provato con ctypes.addressof, ma non sono riuscito a risolvere.

Domanda correlata, come posso effettuare il debug della memoria? Quali
strumenti usare? Quello che mi sarebbe veramente utile è poter
utilizzare gdb, ma non credo che sia possibile.

Grazie,
m.


Maggiori informazioni sulla lista Python