0

我正在将 Visual C++ 桌面应用程序转换为 .NET Web 应用程序。在这样做时,我试图保留最初在桌面应用程序中使用的后端 Visual C++ dll。为了从这些 dll 中删除全局变量,我遇到了 bad_alloc 异常的问题。这个异常似乎是随机出现的,我正在尝试使用许多 try/catch 在较低级别的代码中查明它。我尝试了以下方法,但运气不佳:

1) 从 Debug->Exceptions 启用 C++ 异常。(异常被捕获,但是调用堆栈在定位导致问题的变量甚至函数方面没有帮助)。2) 尝试在 DebugDiag 中为 VS 调试器 Web 服务器进程创建内存泄漏规则。(没有发现泄漏)。

跟踪此问题的任何其他策略都将非常有帮助!

4

1 回答 1

0

通常 C++ 运算符 new() 调用 C malloc() 函数。当 malloc() 返回 0 时,运算符 new 会抛出 bad_alloc。 malloc() 可能会返回 0,因为内存不足或堆损坏。

于 2013-01-03T23:05:14.140 回答