标题:Qt 遍历整个磁盘文件时,中途突然报错Debug Assertion Failed!后程序退出
作者:lwei24
日期:2023-09-26 13:58
内容:
如题,调用如下代码去遍历C盘下所有的文件,Worker是继承QObject,作为工作线程。在Qt应用程序调用到该线程时,去遍历C盘下所有的文件,中途突然报错:Debug Assertion Failed!
void Worker::browseFiles(QString path, std::vector &files)
{
bool res = true;
_finddata_t file;
QString aFilePath = path + "\\*.*";
QByteArray aByteArray = aFilePath.toLocal8Bit();
char const* filePath = aByteArray.data();
/*intptr_t*/long long handle = _findfirst(filePath, &file);
if (handle == -1L)
{
qDebug()
#1 [20091001753 09-26 16:39]
遍历C盘文件,就算你代码写对了,运行也未必能顺利,有权限问题。
#2 [liudianwu 09-27 09:13]
也可能是内存泄漏了
#3 回 20091001753 的帖子 [lwei24 09-27 09:30]
20091001753:遍历C盘文件,就算你代码写对了,运行也未必能顺利,有权限问题。 (2023-09-26 16:39)
多谢提醒,不过Qt应用程序一开始就是以管理员权限运行,即使不遍历C盘,遍历D盘,它也会中途Debug Assertion Failed!!
#4 回 liudianwu 的帖子 [lwei24 09-27 09:33]
liudianwu:也可能是内存泄漏了 (2023-09-27 09:13)
多谢您的建议,目前我也觉得是内存泄露,因为递归一直在遍历获取磁盘文件的路径,内存从任务管理器后台的进程看,内存一直在增加,因此,我在std::vector使用前做了初始化。但好像也没有什么作用。现在还在找为什么会遍历到一半就出现Debug Assertion Failed……
#5 [spygg 09-28 09:39]
这个肯定是 files.push_back(newPath);这句文件太多导致内存溢出了,此外Qt有自带的遍历文件API