繁体   English   中英

用C ++分配内存然后在Cython中解除分配?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM