Речь идет о встроенном Python с использованием swig.
У меня 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>;
Все в порядке, если я заменюMyEnum
с int по всему коду.Не знаю, почему swig нуждается в специальном уничтожении, когда перечисления не являются PyObjects!Я что-то пропустил?Есть ли какие-нибудь %magic_operator
, которые помогут.
Примечание: я не хочу подавлять предупреждение о "утечке памяти" все вместе.
Внимательно посмотрел на обертку, созданную swig, но напрасно.