gpt4 book ai didi

c++ - QFileDialog内存泄漏?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:37:46 27 4
gpt4 key购买 nike

我正在编写一个小应用程序,其中的功能如下所示:

QString askForDir()
{
return QFileDialog::getExistingDirectory(this, "Choose directory", QString(""));
}

自从我添加了这个函数后,我提到在使用这个函数后内存分配变得很奇怪(askForDir())。
我使用 OS X Instruments 应用程序来满足调试需求,所以这就是我得到的:
Snapshot峰值是 askForDir() 函数工作的时刻,我的意思是构建目录树。
在这些峰值之间有什么都没有发生的空间,我的意思是应用程序什么都不做,只是等待用户的其他操作。
如您所见,内存分配正在增长。如果你想要数字:

at 30sec - 91 Mb
at 50sec - 113 Mb
at 1m15sec - 135 Mb


每次增长 22 Mb

我尝试探索它并将 askForDir() 函数更改为如下所示:

QString askForDir()
{
return "/Users/username/Desktop";
}

我上面所说的一切都消失了。所以,我得出结论,问题出在 QFileDialog 上。


这是我正在使用的:

  • OS X 10.9.4
  • Xcode 5.1.1,Carbon
  • Qt 4.8.6

其他人有同样的“问题”吗?

最佳答案

看来,我想通了。
这不是泄漏,也不是错误。如果你在 windows xp 上打开记事本,内存使用量是 4mb。单击文件-> 打开,然后内存使用量增长到 9mb。关闭对话框,您可以看到内存使用量没有减少(或者只是大约 8.9Mb 一点点)。 Windows 显然正在缓存/创建我们的东西(例如缓存)。-> 这是 native 用法。


对于非本地人来说,也是一样的。第一次打开 QFileDialog 时,Qt 库会缓存一些图标供以后使用。这是在应用程序级别。这使得文件对话框中的导航以及稍后再次打开对话框的速度更快。这不是泄漏,当应用程序关闭时,所有内容都会被释放。


看起来到处都在发生同样的事情,所以,我认为,这个问题现在已经没有兴趣了。

关于c++ - QFileDialog内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24512584/

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