我使用 SWIG carrays.i 库创建包装器以双倍访问数组。如果我将其添加到接口文件:%array_functions(double, doubleArray);
,我将获得 tcl 中可用的下一个函数:new_doubleArray
、和。我的问题是:如果使用tcl 过程 () 中的命令创建数组,我是否应该在从过程返回之前使用显式删除它?根据 tcl 逻辑delete_doubleArray
,所有局部变量在过程退出后都会被删除,但我不确定 SWIG 数组。代码示例如下:doubleArray_setitem
doubleArray_getitem
new_doubleArray
testProc
delete_doubleArray
proc createArray {list} {
set length [llength $list]
set a [new_doubleArray $length]
for {set i 0} {$i<$length} {incr i} {
set iElem [@ $list $i]
if {[string is double -strict $iElem]==0} {
error "Element of list must be of type double"
}
doubleArray_setitem $a $i $iElem
}
return $a
}
proc testProc {list} {
set listArray [createArray $list]
return
}
先感谢您。
是的,SWIG 正在通过 在堆上分配内存,
new_doubleArray
并且必须通过 明确释放它delete_doubleArray
。