Julia 朱莉娅';s ccall分配数据的垃圾收集

Julia 朱莉娅';s ccall分配数据的垃圾收集,julia,Julia,我希望有人能澄清Julia垃圾收集器行为的一个方面,以及它如何与使用ccall调用C函数分配的内存交互 例如,我正在打以下电话: setup::Ptr{Void} = ccall(("vDSP_DCT_CreateSetup", libacc), Ptr{Void}, (Ptr{Void}, UInt64, UInt64), previous, length, dct_type) 此函数

我希望有人能澄清Julia垃圾收集器行为的一个方面,以及它如何与使用
ccall
调用C函数分配的内存交互

例如,我正在打以下电话:

    setup::Ptr{Void} = ccall(("vDSP_DCT_CreateSetup", libacc), Ptr{Void},
                         (Ptr{Void}, UInt64, UInt64),
                         previous, length, dct_type)
此函数为
DFT\u设置
对象分配内存并初始化内存(此函数的细节与此无关)。该库还提供了一个析构函数,可在
DFT\u设置
上调用,以便在不再需要对象时释放内存


朱莉娅需要调用析构函数吗?i、 e.垃圾收集器是否在适当的时候处理释放
DFT\u设置
,或者我是否应该调用C deallocator

是的,Julia GC只能清理由Julia自己分配的内存,它不知道由
ccall
s分配的内存


解决此问题的通常方法是从构造函数中调用析构函数,在构造函数中定义,例如参见。

谢谢!我想情况会是这样,但我认为检查一下是明智的。