memoview里面的cython结构......如何分配给他们? (SIGSEGV)

时间:2017-06-23 11:14:12

标签: struct cython sigsegv memoryview

我认为我有类似的问题:

我定义了一个包含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不在结构中,那么这个赋值就可以了。

0 个答案:

没有答案