0

我在函数中遇到未处理的异常。该函数被多次调用。

try {
  unsigned char* b1 = new unsigned char[Length];  //<---here
  unsigned char* b2 = new unsigned char[Length];
  //do some stuff which doesn't seem to throw an exception...then at the end
  delete[] b1;
  delete[] b2;
}
catch (...)
{
    cout<< "Error..." <<end;
 }

问题是,未处理的异常发生在几乎随机的时间。它在第一个语句上中断。另一个问题是:为什么这没有被抓住?Visual Studio 停止,我在 new.cpp 中。

我的第三个问题/问题是:我怎样才能找到问题?长度从来不是一些未初始化的量;通常在 512 左右。

4

1 回答 1

0

似乎 cout << ... 需要一些内存分配,但它不能这样做。配置调试器以在抛出异常时中断执行(正如其他人所建议的那样),并查看抛出了什么以及在什么时候抛出。顺便说一句,Sutter 写道,您可能根本不应该尝试捕获内存分配异常 - 在没有任何内存分配的情况下很难进行所需的错误报告,而且这些很可能会失败,所以为什么要麻烦。(也许你根本不会遇到这些异常 - 虚拟内存和交换是如此美妙的事情......)

于 2013-05-14T19:35:30.880 回答