簡體   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