2017-08-09 54 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對象引用計數變爲零並被銷燬之前沒有執行此操作,則會出現內存泄漏。