утечка памяти при закрытии графического интерфейса пользователя

#wxpython

#wxpython

Вопрос:

Я разрабатываю графический интерфейс пользователя, и все идет хорошо, за исключением того, что когда я закрываю его, в моем терминале появляется следующее, и я боюсь, что это может повлиять на конечного пользователя:

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

Как мне предотвратить эту утечку памяти?

Ответ №1:

Похоже, что мастер закрывается неправильно. Убедитесь, что вы вызываете метод мастера Destroy() при выходе из мастера, независимо от того, завершает пользователь работу мастера или нет.

Вы должны быть в состоянии сделать это, перехватывая события кнопки завершения и отмены мастера. Вы также можете перехватить EVT_CLOSE и уничтожить мастер в этом обработчике событий. Пожалуйста, обратите внимание, что в этом случае вам также потребуется вызвать метод Destroy фрейма, чтобы заставить фрейм закрыться должным образом.

Комментарии:

1. Пожалуйста, создайте небольшой работоспособный пример, который демонстрирует проблему. Также укажите, какие версии OS, wxPython и Python вы используете

2. Привет Mike . Я вызвал Destroy() метод мастера для каждого из отдельных приложений (которые являются функциями, которые я реализовал в своем TestPanel классе), а также включил большую часть run.py кода. После определения моего class LoginDialog() объекта я немедленно скопировал-вставил class RunDemoApp() объект в run.py модуль, выполнив весь соответствующий импорт пакета. Из подсказки, которую вы дали мне ранее, я сделал вывод, что если бы я явно включил код в run.py , мне не понадобилась бы runTest функция. Как всегда, спасибо за руководство Mike . Кстати, ваш блог отличный!

3. Это сложный мастер со многими функциями, которые я разрабатываю для клиента здравоохранения для создания групп и анализа показателей заболеваемости, а также для обнаружения сигналов, поэтому создать небольшой работоспособный пример может быть сложно, но я постараюсь, если мне не удастся решить эту проблему к концу дня. Как бы то ни было, я использую Mac OS X Mavericks, wxPython версии 3.0 (cocoa) и python 2.7.6. Еще раз спасибо.

4. Эта ссылка также может оказаться полезной, если вы используете демонстрационный код: wiki.wxpython.org/Using wxPython Demo Code

5. Спасибо, Майк. Только что проверил это, и это очень информативно, особенно для относительного новичка wxPython, такого как я