我认为我有类似的问题:
我定义了一个包含memoryviews的结构:
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函数来计算矩阵乘法)。我得到的错误是instance.A = ...
分配线上的SIGSEGV(11)。它似乎应该工作(四种类型)。事实上,如果A不在结构中,那么这个赋值就可以了。