¿Ctypes Structures and POINTERS libera automáticamente la memoria cuando se elimina el objeto Python?

Cuando se usan Python CTypes, existen las Estructuras, que le permiten clonar estructuras en C en el lado de Python, y los objetos POINTERS que crean un objeto Python sofisticado a partir de un valor de dirección de memoria y pueden usarse para pasar objetos por referencia de un lado a otro C código.

Lo que no pude encontrar en la documentación ni en ningún otro lugar es lo que sucede cuando un objeto Python que contiene una clase de Estructura que fue desreferenciada de un puntero que regresa del Código C (es decir, la función C de memoria alocada para la estructura) se elimina por sí misma. ¿Se libera la memoria de la estructura C original? Si no, ¿cómo hacerlo?

Además, ¿qué sucede si la Estructura contiene punteros en sí, a otros datos que también fueron asignados por la función C? ¿La eliminación del objeto Estructura libera los punteros a sus miembros? (Lo dudo) De lo contrario, ¿cómo hacerlo? Intentar llamar al sistema "libre" de Python para los punteros en la estructura me está fallando Python.

En otras palabras, tengo esta estructura completada por una llamada a la función c:

class PIX(ctypes.Structure):
    """Comments not generated
    """
    _fields_ = [
        ("w", ctypes.c_uint32),
        ("h", ctypes.c_uint32),
        ("d", ctypes.c_uint32),
        ("wpl", ctypes.c_uint32),
        ("refcount", ctypes.c_uint32),
        ("xres", ctypes.c_uint32),
        ("yres", ctypes.c_uint32),
        ("informat", ctypes.c_int32),
        ("text", ctypes.POINTER(ctypes.c_char)),
        ("colormap", ctypes.POINTER(PIXCOLORMAP)),
        ("data", ctypes.POINTER(ctypes.c_uint32))
    ]

Y quiero liberar la memoria que está usando desde el código Python.

Respuestas a la pregunta(1)

Su respuesta a la pregunta