这个错误让我感到困扰了大约两天:当运行代码时,我有一个运行时错误"终止被调用而没有活动异常\n已中止",为什么?
我尝试找到代码并找到该行可能退出代码"xx = new int [num]",我的测试用例中的num约为640000(64MB内存为新).当我将num设置为小得多为10时,没关系,但这次我的代码得到了错误的答案.
我尝试删除所有"try/catch"子句但仍然有此错误.
另外我//所有调用"xx = new int [num]"子句的函数,错误仍然存在,而这次我找到的代码可能退出是一个正常的"for循环".
所有情况都通过了编译器,你在运行代码时遇到过这个错误吗?谢谢!
我//一些删除子句并得到以下错误: *检测到glibc* ./ESMF_RegridWeightGen:munmap_chunk():无效指针:0x00000000005cd376 *
“在没有活动异常的情况下终止”消息暗示,在程序中的某个时刻,异常处理被破坏了。
内存分配可能是主要原因,但可能不是错误站点。大分配会抛出 std::bad_alloc 异常,并且该异常在某处被错误处理。
要验证该理论,请插入类似以下的行
throw std::logic_error("Foo");
Run Code Online (Sandbox Code Playgroud)
高于分配,这也应该触发该错误。
我遇到过两个常见的原因:
您应该能够使用调试器诊断后一种情况。应用程序的堆栈跟踪(例如通过在 gdb 中运行它获得的)应该会有很大帮助。