class Test {
public:
Test() {printf("Construct\n");}
~Test() {printf("Deconstruct\n");}
};
假设swig包装的模块是pytest
,我尝试了以下代码:
我看到了预期的输出“Construct”。然而,有时我看不到输出“解构”。我猜想这是因为当我释放字典^ {< CD3}}时,保存^ {< CD2> } C++对象的对象没有被释放。所以我试了一下:
import gc
gc.collect()
我还是看不到“解构”。我在离开ipython shell时看到的。所以我的问题是(1)我如何明确地让Python在没有被引用时释放这些被Sigg包裹的C++对象;(2)有没有一种方法让Python在一个被宿主的Python对象被撤销后立即被释放的对象的行为?在
编辑:
当我执行以下操作时,可能会出现问题:
x = dict(a=pytest.Test())
x
del x
第二个命令是在我试图检查x
是什么时发出的。然后从ipython中的Out
列表中引用该对象。在
所以现在我的问题是:是否保证gc.collect()
将删除所有未引用的变量(即,调用它们的__del__
)?在
目前没有回答
相关问题 更多 >
编程相关推荐