2017-08-09 92 views
0

假设内部分配数组的内存SWIG问题,我有一个C结构是这样一个结构

struct foo { 
    int sz; 
    struct bar **arr; 
}; 

在我痛饮文件,我用“carrays.i”给我这个结构里面的阵列的控制。这里我使用

%module mdl 
%include "carrays.i" 
%array_functions(struct bar*, barArray) 

然后我在python中为这个数组分配内存。

a = mdl.foo() 
a.arr = mdl.new_barArray(sz) 

我的问题是,我应该调用

mdl.delete_barArray(a.arr) 

释放分配阵列的存储之前,我退出当前功能,或者SWIG会自动做这个,好让我不需要担心呢?

回答

0

当数组不再需要时,您必须调用delete。如果在foo对象引用计数变为零并被销毁之前没有执行此操作,则会出现内存泄漏。