【发布时间】:2010-10-21 16:46:09
【问题描述】:
这是关于使用 swig 的嵌入式 python。
我有一个std::map<enum, std::string> 暴露于 python(嵌入式 python)。当脚本执行时,swig 在最后吐出下面的“警告”(当地图超出范围时 - 我猜):
swig/python 检测到 'std::map
类型的内存泄漏 ...没有找到析构函数
.i 文件是:
enum MyEnum {
...
};
typedef std::map<MyEnum, std::string> MyTypedef;
%template(MyTypedef) std::map<MyEnum, std::string>;
如果我在整个代码中用 int 替换 MyEnum,一切都会好起来的。当枚举不是 PyObjects 时,不知道为什么 swig 需要任何特殊的破坏!我错过了什么吗?是否有一些%magic_operator 会有所帮助。
注意:我不想同时抑制“内存泄漏”警告。
仔细看了一下swig生成的wrapper,但是没有用。
【问题讨论】:
-
SWIG 知道枚举的完整定义吗?查看stackoverflow.com/questions/918180/…的答案