SWIG/Python 检测到 wxPasswordEntryDialog 内存泄漏

Posted

技术标签:

【中文标题】SWIG/Python 检测到 wxPasswordEntryDialog 内存泄漏【英文标题】:SWIG/Python detected wxPasswordEntryDialog Memory Leak 【发布时间】:2012-08-07 23:29:15 【问题描述】:

我正在使用 wx.PasswordEntryDialog 从用户那里获取密码,但每次创建 PasswordEntryDialog 时都会收到此错误:

swig/python detected a memory leak of type 'wxPasswordEntryDialog *', no destructor found.

这是导致它的地方之一:

def getpass():
    dialog = wx.PasswordEntryDialog(None, 'Enter your password')
    if dialog.ShowModal() == wx.ID_OK:
        value = dialog.GetValue()
    else:
        value = None
    del dialog
    return value

【问题讨论】:

你如何包装PasswordEntryDialog,即 SWIG 接口来自哪里以及它包含什么? @Flexo:wxPython 是使用 SWIG 构建的。这似乎是 wxPython 的一个奇怪之处。提问者几乎可以肯定没有在这里直接使用 SWIG。 Luke 是对的,我正在使用 wxPython。 【参考方案1】:

我发现你可以通过换行来摆脱消息

del dialog

dialog.Destroy()

(如果相关,我正在使用 wxWidgets/wxPython 2.9.3。)

【讨论】:

有趣的是,我确实想知道它是一个预构建的界面还是 OP 放在一起的东西。你知道这个版本的 wxPython 是用什么版本的 SWIG 构建的吗? @Flexo:不,我不确定它是否相关。我所知道的是,我能够重现提问者报告的消息,并且进行我描述的替换会删除此消息。 我有一种有趣的感觉,在各种旧版本的 SWIG 中存在一些与此相关的错误。

以上是关于SWIG/Python 检测到 wxPasswordEntryDialog 内存泄漏的主要内容,如果未能解决你的问题,请参考以下文章

Swig/python:啥时候需要 SWIG_init()?

SWIG Python 绑定到本地代码不适用于 OpenCV 2.1

使用 SWIG 从 Python 向 C 传递和数组参数

带有类型推导的 swig python 模板函数

包装 std::vector 的 std::vectors,C++ SWIG Python

没有 DLL 的 SWIG + Python