我该如何解决这个错误?在抛出' std :: bad_alloc'的实例后终止调用what():std :: bad_alloc

时间:2015-01-15 03:05:05

标签: c++ qt

这是代码: 功能:

QString printDir2(QString path, int level)
{
int check =1;
QDir folder(path);

QString space;
QString buffer;
qDebug() <<"nivelul 1 \n";
for(int i=0; 1<level; i++)
    space +="    ";
qDebug() <<"nivelul 2 \n";
foreach(QFileInfo temp , folder.entryInfoList())
{
    if(check > 2)
    {
        qDebug() <<"nivelul 4 \n";
        buffer += space + temp.absoluteFilePath() + "\n";
        if(temp.isDir())
            buffer += printDir2(temp.absoluteFilePath(), ++level);
    }
    check++;
    qDebug() <<"nivelul 3 \n";
}
return buffer;

}

在这里我称之为功能:

QString drum="/home/sunny/Desktop/QT/descarca";
        str=printDir2(drum,0);
        qDebug()<<str<<"acesta este drumul";

如何从终端修复此erorr:
抛出'std :: bad_alloc'的实例后调用terminate():std :: bad_alloc 当我运行代码时,这是终端:http://s013.radikal.ru/i325/1501/e5/aade9346f0aa.png

1 个答案:

答案 0 :(得分:0)

您可能遇到无限递归。

在调试器中运行您的程序。如果您使用gdb,则可以在catch throw之前发出命令run。然后调试器将在抛出异常时停止。您可能需要移动up几次,以查看代码中的哪一行引发了异常。