gpt4 book ai didi

c++ - 在 C++ 中分配内存然后在 Cython 中释放它?

转载 作者:行者123 更新时间:2023-11-30 02:42:38 25 4
gpt4 key购买 nike

我有一个 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)分配内存,并使用相应的函数释放内存。

关于c++ - 在 C++ 中分配内存然后在 Cython 中释放它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26920736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com