memoview внутри структур Cython... как их назначить? (SIGSEGV)

Я думаю, что у меня есть похожая проблема:

Я определяю структуру, содержащую представления памяти:

ctypedef double[:] vector
ctypedef double[:,::1] matrix

ctypedef struct my_struct:
    matrix A
    vector b

Теперь я инициализирую такую ​​структуру с помощью:

cdef my_struct *instance = <my_struct*>malloc(sizeof(my_struct))
instance.A = 2*np.eye(3, dtype='double')
instance.b = np.zeros((3,), dtype='double')

print(matmul(instance.A, instance.B))

игнорировать matmul на данный момент (это хорошо протестированная функция Cython для вычисления умножения матриц). Я получаю ошибку SIGSEGV (11) в instance.A = ... строка назначения. Кажется, что это должно работать (как). На самом деле, если A не находится внутри структуры, это назначение будет работать.

0 ответов

Другие вопросы по тегам