【发布时间】:2015-01-15 21:56:54
【问题描述】:
这是代码: 功能:
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";
如何从终端修复此错误:
在抛出 'std::bad_alloc' what() 的实例后调用终止:std::bad_alloc
这是我运行代码时的终端:http://s013.radikal.ru/i325/1501/e5/aade9346f0aa.png
【问题讨论】:
-
std::bad_alloc在没有足够可用内存时抛出。您可以通过让计算机拥有更多内存或更改程序以减少内存需求来解决此问题。 -
我有足够的内存,我尝试进行调试,发现在第 4 次递归后他抛出了这个错误!我认为错误在于我调用函数的方法。
-
异常究竟是从哪里(哪一行)抛出的?
-
你可能有足够的内存。但是如果你的应用是 32 位的,你在分配上就有限制。