PraisonAI Creator Suite 实战指南:用 AI 自动化内容创作的新闻采集、脚本、钩子与简报全流程
2026/9/16 21:03:13
你是否为了解QFileInfoList而惊喜过?你是否还不曾对QFileInfoList苦恼过?
不管是与不是,我都将抛出疑问,你知道它的细节吗?你了解过,当一个文件夹过于庞大时,它所带来的威胁?一次简单的访问文件夹,或许没有什么问题,但如果短时间内反复访问一个正在增大的文件夹,你是否考虑过会出现什么情况?
void test() { …… QFileInfoList file_list = dir.entryInfoList(QDir::Files | QDir::Hidden | QDir::Dirs | QDir::NoDotAndDotDot); …… }我们需要警醒,QFileInfoList时会申请内存的!
QFileInfoList的底层实现:QFileInfoList是QList < QFileInfo > 的别名。QList在动态添加元素时,会根据元素数量自动管理内存:
该方法会遍历目录中的所有条目(包括文件、隐藏文件、子目录,但排除.和…)。对每个符合过滤条件的条目,创建一个QFileInfo对象,并将其添加到返回的QList中。即使目录为空,也会返回一个空列表(此时内存分配主要用于QList的元数据,如容量、大小等)。
这行代码会申请内存,主要用于存储QFileInfo对象列表和QList的元数据。内存分配量与目录中的条目数量(文件、隐藏文件、子目录)成正比,且受QList的内存管理策略影响。在Qt中,这种内存分配是必要的,但需注意大目录可能导致的内存开销,可通过分批处理或按需加载优化性能。
如果对其并不在意,那么代表你还没有到接触这一层次的项目。与QFileInfo类似的,比比皆是,如果不对其加以管制,将会导致整个系统资源竞争激烈,最终卡顿,或者崩溃。在任何一个对内存有严格要求的项目中,规避QFileInfo等类似的内存异常申请,才是项目扩展的良好基础。
QFileInfoList-避免另类的内存泄漏