我有一个关于使用vector管理资源的简单代码。 但是当我跑到这一行时:
sentClientList.push_back(socket);
它随着这个exeption throw随机中断:一个堆已经被破坏(参数:0x76F9D8D0)。我在这里注意到的是每次触发的地址始终相同。
我尝试调试,但它只在需要时发生,每次运行程序时都只发生一次。但是当我按下继续时,向量中的第一个值变为正常,它只是忽略了错误并且可能会运行。
以下是问题:
答案 0 :(得分:3)
- 我可以用什么方式破坏矢量中的数据而不触及它?
醇>
E.g。使用创建std::vector
变量来破坏堆栈。考虑是否有意外覆盖任何数据(例如管理该向量的指针)。矢量变量被搞砸了,不能再合理使用了。
- 无论如何都会自动忽略此错误?
醇>
不,你的完整程序在那时搞砸了(如上所述)。你不能忽视这一点。
进一步的步骤是未定义的行为,理论上可以导致
不,你不能。这对于异常处理没有任何意义。
- 我可以使用try catch来捕获它吗?
醇>
虽然有valgrind或equivalent tools for Visual Studio等工具可以帮助调试腐败来源。
对于 off-topic 问题的答案感到抱歉,但这对于评论来说太大了。 子>