Obtenga el valor de un puntero Cython

Estoy escribiendo una función que construye un malloc'dunsigned char * matriz, y luego vuelve a ejecutar el puntero. En Cython o C puro, esto es fácil. Todo lo que tiene que hacer es establecer un tipo de retorno en la función y devolver el puntero a la matriz. Hecho. Sin embargo, he llegado a un punto en el que necesito devolver un puntero a una matriz creada en Cython, a Python. Sé que un puntero es simplemente la dirección de memoria. ¿Hay alguna manera de que pueda devolver un puntero Cython a Python como un objeto python (como int o hexadecimal, porque la dirección de memoria es esencialmente un número), por lo que básicamente puedo administrar punteros en python?

He intentado devolver el valor del puntero de esta manera:

cdef unsigned char array[8]

def return_pointer():
    return &array

Por supuesto, esto no funciona porque la conversión no se puede hacer. Cython se queja conCannot convert 'unsigned char (*)[8]' to Python object. ¿Alguna sugerencia?

EDITAR:

No necesito acceder al valor en la dirección de memoria referenciada por el puntero en Python, solo paso el puntero. Luego planeo usar el puntero de objeto Python y llamar a c funciones con él como argumento.

Respuestas a la pregunta(1)

Su respuesta a la pregunta