QFileDialog内存泄漏?

tem*_*ema 6 c++ memory qt memory-leaks qfiledialog

我只是在写一个小应用程序,其中我的功能看起来像:

QString askForDir()
{
    return QFileDialog::getExistingDirectory(this, "Choose directory", QString(""));
}
Run Code Online (Sandbox Code Playgroud)

因为我已经添加了这个函数,所以我提到在使用这个函数(askForDir())之后内存分配变得非常奇怪.
我使用OS X Instruments应用程序来调试需求,所以这就是我所拥有的:
快照 峰值是askForDir()函数运作的时刻,我的意思是构建目录树.
在这些峰值之间有空间没有发生任何事情,我的意思是app什么都不做,只是等待用户的其他动作.
正如您所看到的,内存分配正在增长.如果你想要数字:

at 30sec - 91 Mb
at 50sec - 113 Mb
at 1m15sec - 135 Mb
Run Code Online (Sandbox Code Playgroud)


每次它都在增长 22 Mb

我试图探索它并将askForDir()功能更改为smth,如下所示:

QString askForDir()
{
    return "/Users/username/Desktop";
}
Run Code Online (Sandbox Code Playgroud)

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


这是我正在使用的:

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

还有其他人有同样的"问题"吗?

tem*_*ema 5

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


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


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