2012-11-01 101 views
0

我们在我们的代码测试,试图胳肢堆栈溢出漏洞(OpenCV中的一个古老的修改版本)。 AFAIK,如果实际存在堆栈溢出,测试应该是SEGV。因为异常std::bad_alloc的抛出从堆栈分配C++ std :: bad_alloc?

我们的一个用户越来越测试失败。这听起来像这个例外只是针对堆分配(新运算符的结果 - http://www.cplusplus.com/reference/std/new/bad_alloc/)。

会这样发生,因为大型堆栈分配的?

仅供参考,测试是:http://code.google.com/p/modpagespeed/source/browse/trunk/src/net/instaweb/rewriter/image_test.cc#826

和错误报告是:http://code.google.com/p/modpagespeed/issues/detail?id=528

回答

2

没有,这个例外只从operator new/new[]抛出。

这可能发生,即使你不使用任何地方operator new/new[] - 原因 - STL容器都使用它。

+0

感谢,在我们的例子中,我们就用新的分配memmory的100MB块,所以我猜这是个问题。如果是这样,测试失败是虚惊一场(这很好)。 – sligocki