Cython的cdef函数使用临时数组,需要remove/deallocated吗?
Cython's cdef function use of temporary array, does it needs to be remove/deallocated?
我看过一个带有 cdef 函数的 cython 代码,它使用了一个临时数组
cdef void some_funct (int* OUT, int size, int const_val) nogil:
cdef:
int blah.. blah...blah...
float out_tmp[8]
for i in range(64):
.....
..... out_tmp is involved somehow as intermediate array
什么是 out_tmp?它是一个向量吗?一个 C++ 数组?指针?我是否需要 remove/delete 或在退出 cdef 函数之前取消分配它,或者 cython 会自动执行此操作?如果需要手动清理,如何remove/delete/deallocate?
谢谢。
out_tmp
是堆栈分配的 C 数组。它仅在函数调用期间存在(所以不要 return 指向它的指针!)并且不需要释放。
我看过一个带有 cdef 函数的 cython 代码,它使用了一个临时数组
cdef void some_funct (int* OUT, int size, int const_val) nogil:
cdef:
int blah.. blah...blah...
float out_tmp[8]
for i in range(64):
.....
..... out_tmp is involved somehow as intermediate array
什么是 out_tmp?它是一个向量吗?一个 C++ 数组?指针?我是否需要 remove/delete 或在退出 cdef 函数之前取消分配它,或者 cython 会自动执行此操作?如果需要手动清理,如何remove/delete/deallocate?
谢谢。
out_tmp
是堆栈分配的 C 数组。它仅在函数调用期间存在(所以不要 return 指向它的指针!)并且不需要释放。