【问题标题】:Debugging a sigtrap in c++在 C++ 中调试 SIGTRAP
【发布时间】:2016-11-24 15:45:35
【问题描述】:

在我最近制作的一个程序中,我遇到了一些令人担忧的随机崩溃/关机崩溃,在剥离之后,我认为我已经将其范围缩小到 SIGTRAP,这种情况在特定情况下创建向量时会发生。代码的主要部分可以在这里找到:http://pastebin.com/xp9Cm04Q 和 tile 类在这里:http://pastebin.com/Niv7SSyF(运行 buildworld 子例程时会出现问题),控制台输出可以在这里找到http://pastebin.com/7HyaMke8。发生这种情况时,调试器会转到 new_allicator,如果这值得知道的话。

还要注意,由于某种原因,删除了对 rTest 的调用(仅调用该类具有的 RNG),但前提是此后创建了另一个子区域。不用说,我完全不明白为什么会这样。

我在这里做了什么蠢事吗?我只使用标准库,所以我认为我不能错误地安装它们或任何东西。这是我可以/应该忽略的问题吗?非常感谢有关如何解决此问题的任何帮助。

【问题讨论】:

  • 你定义了 subZone 和 Tile 复制构造函数吗?
  • 不,我没有。我会尝试添加它们,看看它是否会改变任何东西。
  • 在创建了一个简单的复制构造函数之后,它只复制了类中的所有值(不确定这是否与默认值相同),错误仍然存​​在。据我所知,我没有使用任何时髦的内存管理,因此我不费心制作复制构造函数。我应该做一个吗?
  • tiles.back().back().giveRGen(&zoneRGen);

标签: c++ debugging vector random


【解决方案1】:

tiles.back().back().giveRGen(&zoneRGen);

一个问题:你的图块有一个指向 RNG 对象的链接;该链接将被破坏,然后subZone 被复制。例如这里:

allZones.push_back( subZone( x , y , worldRGen() ) );

【讨论】:

    猜你喜欢
    • 2017-11-05
    • 2012-01-25
    • 2011-05-26
    • 2011-03-29
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 2012-04-20
    • 2014-12-21
    相关资源
    最近更新 更多