C++ vector::push_back导致堆在确切地址处损坏

C++ vector::push_back导致堆在确切地址处损坏,c++,C++,我有一个简单的代码,关于使用向量管理资源。 但当我跑到这一行时: sentClientList.push_back(socket); 它会随此exeption抛出而随机中断:堆已损坏(参数:0x76F9D8D0)。我在这里注意到的是,每次都会触发相同的地址。 我试图调试,但它发生在它想要的时候,每次我运行程序时都只发生一次。但当我按下continue键时,vector中的第一个值变为正常值,它只是忽略了错误并可能运行 以下是问题: 怎样才能在不接触矢量的情况下破坏矢量中的数据 是否存在自动忽

我有一个简单的代码,关于使用向量管理资源。 但当我跑到这一行时:

sentClientList.push_back(socket);
它会随此exeption抛出而随机中断:堆已损坏(参数:0x76F9D8D0)。我在这里注意到的是,每次都会触发相同的地址。

我试图调试,但它发生在它想要的时候,每次我运行程序时都只发生一次。但当我按下continue键时,vector中的第一个值变为正常值,它只是忽略了错误并可能运行

以下是问题:

  • 怎样才能在不接触矢量的情况下破坏矢量中的数据
  • 是否存在自动忽略此错误的方法
  • 我能用try-catch来接这个吗
  • 怎样才能在不接触矢量的情况下破坏矢量中的数据
  • 例如,
    std::vector
    变量创建时使用的堆栈损坏。考虑是否意外覆盖了任何数据(例如,管理该向量的指针)。向量变量被搞砸了,不能再合理地使用了

  • 是否存在自动忽略此错误的方法
  • 不,你的整个计划在那一点上都搞砸了(如上所述)。你不能忽视这一点

    任何进一步的步骤都是未定义的行为,理论上可能导致

    • 你的薛定谔猫死了(或没有死)
    • 你的冰箱爆炸(因为触发了奇怪的物联网反馈)
    • 小恶魔从你的鼻孔里飞了出来
  • 我能用try-catch来接这个吗
  • 不,你不能。这不需要处理异常

    尽管有像或这样的工具来帮助调试腐败的根源


    很抱歉回答了一个离题的问题,但这个问题太大了,无法发表评论。

    车祸的原因在别处。可能是错误的复制构造函数,或者错误的向量索引访问。向量的定义是什么?(为什么里面有字体?)这里几乎没有足够的内容。请提供一个。它刚刚有一个套接字。@user3819845您只是在指出程序最终出现故障的地方。问题的根源在代码的其他地方。或者
    sentClientList
    是无效实例,您正在使用此实例访问向量。这就是为什么您需要发布一个,以便我们知道在什么上下文中调用此函数。谢谢。但为什么我按“继续”时它会变成“正常”呢?@user3819845请定义“正常”。听起来像是在未定义行为的领域中钓鱼。@user3819845--不要按“继续”并实际修复错误。按“继续”键是傻瓜的金子。谢谢。我的意思是,按continue可以使程序运行无误。此函数被连续调用。当它出现故障时,我没有任何线索来修复它,然后尝试继续。@user3819845当然,如果运气好,所有星星都对齐,按“继续”而不是修复错误,程序将正确运行一段时间,直到它再次出现故障。如果你不知道如何修复这个bug,那么给我们更多的信息,而不仅仅是一个内存地址。