[Python-es] Asignación de memoria dinámica (malloc/free) en Python

Santi Saez santisaez en woop.es
Mie Sep 29 12:41:10 CEST 2010


El 28/09/10 14:41, lasizoillo escribió:

Hola Javi,

>> He estado Googleando pero no encuentro forma de trabajar directamente con la
>> memoria, ni equivalentes a malloc/free, etc. ¿Existe alguna forma de hacer
>> un malloc() desde Python, y en caso de no existir se os ocurre alguna forma
>> de determinar la memoria máxima que podría asignar un script en Python?
>> muchas gracias!
>>
> Cuando quieras usar funciones de c puedes hacerlo sin complicarte
> demasiado mediante ctypes:
> http://docs.python.org/library/ctypes.html

Con ctypes he conseguido justo lo que estaba buscando, muchas gracias!!

Tan solo un detalle, el script funciona correctamente cuando se ejecuta 
en máquinas de 32-bits, pero en 64-bits genera un SegFault al hacer el 
primer free(), ¿A alguien se le ocurre que puede estar pasando o como 
podría hacer debug? strace no está aportando mucha información:

	(..)
	write(1, "1 MB\n", 51 MB)                   = 5
	--- SIGSEGV (Segmentation fault) @ 0 (0) ---
	+++ killed by SIGSEGV +++

El script está disponible en:

	http://pastebin.com/nTHBrU7Z

Como decía, malloc() está funcionando correctamente en las 2 
arquitecturas, pero free() falla en x86_64 con un 'Violación de 
segmento', gracias!!

Saludos,

-- 
Santi Saez
http://woop.es


Más información sobre la lista de distribución Python-es