检测到Swig/Python内存泄漏

检测到Swig/Python内存泄漏,python,memory-leaks,swig,Python,Memory Leaks,Swig,我有一个非常复杂的类,我正试图用SWIG为其制作Python包装器。但是,当我在Python中创建该项的实例时,如果不接收以下消息,我将无法初始化某些数据成员: >>> myVar = myModule.myDataType() swig/python detected a memory leak of type 'MyDataType *', no destructor found. 有人知道我需要做什么来解决这个问题吗?是否有可以用来生成析构函数的标志?我很清楚错误消息,

我有一个非常复杂的类,我正试图用SWIG为其制作Python包装器。但是,当我在Python中创建该项的实例时,如果不接收以下消息,我将无法初始化某些数据成员:

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

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

我很清楚错误消息,您需要为这种类型定义析构函数

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

请检查
myDataType
是否为SWIG已知的类型。在调试消息打开的情况下重新运行SWIG,并检查是否有类似的消息

Nothing is known about Foo base type - Bar. Ignored

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

这是不正确的。完全有可能已经定义了析构函数,或者正在使用默认析构函数而没有看到此错误。重要的是SWIG知道这样一个析构函数的存在。请参阅:相关问题:应启用哪个SWIG调试标志?其中一些产生了大量的信息。我应该在哪个标志下查找您提到的消息?