[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