如何模拟并获取“bad_alloc”异常?

时间:2012-09-24 13:25:24

标签: out-of-memory bad-alloc

有谁能告诉我如何在C ++中模拟和生成bad_alloc异常?在我的某些地方的代码中,我使用的是new运算符,它将抛出bad_alloc异常。我想模拟这种情况,需要测试代码。

1 个答案:

答案 0 :(得分:1)

Balamurugan,

今天下午我有同样的疑问,并没有看到任何相关内容。 所以我去了CPlusPlus并将try catch放在一个无限循环中,并且工作了。在VS C ++ 2010 Express下。

在我的代码下面:

// bad_alloc standard exception
#include <iostream>
#include <exception>
using namespace std;

int main () 
{
  unsigned int count=0;
  while (1) 
  {
    count++;
    try
     {
      int* myarray= new int[1000000];
     }
     catch (exception& e)
     {
    cout << "Standard exception: " << e.what() << endl;
    cout << "\nAborting after "<< count << " loops";
    return -1;
     }
   }
cout<<"\nNormal finishing...";
return 0;
}

在我的情况下,它是在523循环之后被捕获的。如果我知道设置将堆限制为Fisical Memory,我会更好,如果我发现我会让你知道。