C++多栈操作代码运行出现timeout: the monitored command dumped core错误
错误触发原因
代码中stop1指令对应的分支存在低级笔误:
- while循环的终止条件错误判断了
stk0是否为空,但循环体内实际操作的是stk1 - 对应你给出的测试用例,执行到
stop1时:stk0中还剩余2个元素(Agra、Meerut),永远满足非空条件,循环会无限执行stk1中仅剩余2个元素(Jaipur、Ajmer),循环执行2次后stk1就被清空,后续再调用stk1.top()、stk1.pop()属于未定义行为,直接触发段错误(core dump),同时死循环逻辑也会触发超时报错。
修复方案
只需要将stop1分支的循环条件中的stk0修改为stk1即可,修改后的对应代码片段如下:
else if(a=="stop1") { while(!stk1.empty()) { cout<<stk1.top()<<endl; stk1.pop(); } break; }
内容的提问来源于stack exchange,提问作者Siddhant Nigam
相关产品推荐
相关产品推荐

