16

我有一个非常复杂的类,我正在尝试在 SWIG 中制作 Python 包装器。但是,当我在 Python 中创建项目的实例时,我无法在没有收到消息的情况下初始化某些数据成员:

>>> myVar = myModule.myDataType()
swig/python detected a memory leak of type 'MyDataType *', no destructor found.

有谁知道我需要做些什么来解决这个问题?有没有我可以用来生成析构函数的标志?

4

2 回答 2

12

SWIG 始终生成析构函数包装器(除非%nodefaultdtor使用指令)。但是,如果它对类型一无所知,它将生成一个不透明的指针包装器,这将导致泄漏(以及上述消息)。

请检查这myDataType是 SWIG 已知的类型。在打开调试消息的情况下重新运行 SWIG 并检查任何类似于

Nothing is known about Foo base type - Bar. Ignored

接收到上述消息意味着 SWIG 不完全了解您的类型层次结构,因此对有限的信息进行操作——这可能导致它不生成 dtor。

于 2009-05-28T13:59:41.777 回答
-13

错误消息对我来说很清楚,您需要为此类型定义一个析构函数。

于 2009-05-28T01:37:46.720 回答