检测到内存泄漏...找不到析构函数 - 用于枚举

时间:2010-10-21 16:46:09

标签: python swig

这是关于使用swig的嵌入式python。

我有一个std::map<enum, std::string>暴露给python(嵌入式python)。执行脚本时,swig会在末尾吐出下面的“警告”(当地图超出范围时 - 我猜):

  

swig / python检测到类型'std :: map&lt;的内存泄漏MyEnum,std :: string&gt;
  ......没有找到析构函数

.i文件是:

enum MyEnum {
 ...
};

typedef std::map<MyEnum, std::string>  MyTypedef;
%template(MyTypedef) std::map<MyEnum, std::string>;

如果我在整个代码中用int替换MyEnum,那就没事了。当枚举不是PyObjects时,不知道为什么swig需要任何特殊的破坏!我错过了什么吗?是否有一些%magic_operator会有所帮助 注意:我不想一起抑制“内存泄漏”警告。

仔细观察swig生成的包装但是徒劳无功。

1 个答案:

答案 0 :(得分:0)

声明顺序可能有问题:必须在将MyEnum添加到SWIG界面后声明std :: map%模板。

我过去没有这样做(虽然在我的情况下,map键是unsigned int的typedef别名),并且看到了这里报告的完全相同的症状集。