[英]Allocate memory in C++ then deallocate it in Cython?
我有一个C ++函数,它分配一个数组并返回它。 我想在Cython中使用这个数组,然后在完成后删除它,但Cython似乎对我尝试这样做的方式不满意。 最简单的例子:
foo.hpp:
float * my_fun() { return new float[5]; }
foo.pyx:
cdef extern from "foo.hpp":
float * my_fun()
def my_other_fun():
cdef float * foo = my_fun()
del foo
当我尝试cython -a foo.pyx
我得到错误Deletion of non-Python, non-C++ object
。 是什么赋予了? 如果有一种方法可以在不分配堆内存的情况下实现这一点,我全都听见了。
应始终以与分配内存相同的方式释放内存。 你在做你正在做的事情时遇到麻烦。
我可以想到解决这个问题的两种方法:
1)在C ++中有一个删除函数,你调用它来释放内存。
2)直接从系统服务或库调用(例如malloc)分配内存,并使用相应的函数释放内存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.