Странное поведение wxWindow::Destroy()
Posted: Fri Nov 15, 2019 4:47 pm
wxw 3.0.4, Visual Studio 2008, MSW
В документации сказано- не удалать объекты wxWindow (и производные) с помощью стандартного delete, а пользоваться Destroy(), иначе рушится Event Loop и т.д.
В моем проекте часто нужно удалять десятки объектов wxWindow и создавать новые. Сначала пользовался delete по незнанию, приложение часто падало.
Стал пользоваться Destroy, стало лучше, но приложение все равно периодически непредсказуемо падает, причем по дебаггеру видно, что падает явно не в моем коде, а в глубинах библиотеки.
Если вместо Destroy вызывать просто Hide(), то падения прекращаются, но... так мы не освобождаем память.
Как же все таки правильно удалять окна и производные?
На английском встречалось, что destroy удаляет объект безопасно для цикла сообщений только если это top level window. В моем приложении они явно не top level, т.к. их родительское окно само является дочерним для главного окна приложения.
И как быть?..
В документации сказано- не удалать объекты wxWindow (и производные) с помощью стандартного delete, а пользоваться Destroy(), иначе рушится Event Loop и т.д.
В моем проекте часто нужно удалять десятки объектов wxWindow и создавать новые. Сначала пользовался delete по незнанию, приложение часто падало.
Стал пользоваться Destroy, стало лучше, но приложение все равно периодически непредсказуемо падает, причем по дебаггеру видно, что падает явно не в моем коде, а в глубинах библиотеки.
Если вместо Destroy вызывать просто Hide(), то падения прекращаются, но... так мы не освобождаем память.
Как же все таки правильно удалять окна и производные?
На английском встречалось, что destroy удаляет объект безопасно для цикла сообщений только если это top level window. В моем приложении они явно не top level, т.к. их родительское окно само является дочерним для главного окна приложения.
И как быть?..