gpt4 book ai didi

C++ wxWidgets Gui-App关闭后保留在内存中

转载 作者:行者123 更新时间:2023-11-30 03:05:28 25 4
gpt4 key购买 nike

主题说明了一切。在我关闭我的应用程序后,它保留在具有一些内存的进程列表中。我尝试了 google perf 工具和数小时的调试以找到泄漏。

是否有其他工具可以测试并发现问题?

谢谢。

最佳答案

我的猜测是您关闭了顶级窗口,因此关闭了它的所有子窗口,但您没有关闭应用程序本身。

如果您的程序以“正常”方式排列,则不会发生这种情况,但如果您有意或无意地使用了不寻常的排列,则可能会发生这种情况。

当然,修复它取决于您安排代码的准确程度。但是,这里有一个开始的建议。

关闭应用程序的常用方法是调用 wxApp::OnExit(),这通常发生在顶层窗口关闭时。

你有自己的类,派生自 wxApp 吗?你有 OnExit() 的覆盖吗?如果没有,那么就这样做并使用调试器检查它是否被调用。如果它没有被调用,找出如何确保它被调用。

另一个想法:使用以下方法检查您的顶层窗口是否会关闭应用

bool wxApp::GetExitOnFrameDelete() const

Returns true if the application will exit when the top-level window is deleted, false otherwise.

如果此返回 false,则使用相应的集合使其返回 false。

第三个想法:当有任何顶层窗口打开时,应用程序不会退出。那么也许您有另一个已最小化或不可见但尚未关闭的顶级窗口?任何 wxDialog 或 WxFrame 或从它们派生的窗口都是顶级窗口,将阻止应用程序关闭。

第四个想法:您是否有应用程序对象的任何全局变量或属性,其析构函数可能会进入无限循环?这些析构函数在窗口被销毁后调用,如果其中一个不返回,您将看到您描述的行为。

关于C++ wxWidgets Gui-App关闭后保留在内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7687521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com