在Cython代码中,我可以分配一些内存并将其包装在内存视图中,例如像这样:

cdef double* ptr
cdef double[::1] view
ptr = <double*> PyMem_Malloc(N*sizeof('double'))
view = <double[:N]> ptr

如果我现在使用 PyMem_Free(ptr) 释放内存,尝试访问像 ptr[i] 这样的元素会引发错误 . 但是,我可以安全地尝试访问 view[i] (虽然它不会返回原始数据) .

我的问题是:解除指针是否总是安全的?内存视图对象是否以某种方式通知了正在释放的内存,或者我应该以某种方式手动删除视图?此外,即使存储器视图引用了内存,也可以保证释放内存吗?