【问题标题】:Find where a vector subscript is out of range查找向量下标超出范围的位置
【发布时间】:2016-04-28 09:27:46
【问题描述】:

我收到错误“向量下标超出范围”。我知道这意味着我在向量中调用了一个不存在的索引。但是我怎样才能找到有问题的向量呢? Windows 调试器似乎没有多大帮助。

【问题讨论】:

  • 如果无法访问(或不喜欢使用)调试器,您可以将大部分代码存根,直到错误消失,然后恢复一步,存根较小的部分,依此类推,直到您盯着相关的行。
  • 一个开箱即用的解决方案是用您自己的类覆盖向量,该类在调用真正的 Vector 之前检查您的索引,并且在超出范围索引的情况下,通过您的代码传递设置断点。
  • 您可以将向量 operator[] 更改为 .at() 调用,然后在调试器中捕获异常。

标签: c++ stdvector


【解决方案1】:

您在调试器中运行程序,并在程序遇到致命错误时要求该调试器停止(在我见过的每个调试器中,这是默认行为)。当程序崩溃时,您会询问调试器它正在执行哪一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    相关资源
    最近更新 更多