【问题标题】:Bullet physics crashing because of invalid reference?子弹物理因无效参考而崩溃?
【发布时间】:2013-08-17 14:21:24
【问题描述】:

我正在制作一个带有子弹物理的游戏,其中我有一个 Platform 类,它包含一个 btBoxShape、btDefaultMotionState 和一个 btRigidBody 作为成员。退出我的游戏时它崩溃了。我将 Platform 对象存储在 std::vector 中,我认为这就是问题所在。当我推回更多平台时,向量会调整大小并在内存中移动。这意味着任何指向刚体的形状和运动状态的指针都是无效的。我该如何解决这个问题?

【问题讨论】:

    标签: c++ pointers bulletphysics


    【解决方案1】:

    std:deque 不会使引用无效。

    【讨论】:

      【解决方案2】:

      我能想到几个选项。

      std::array/std::vector 使用固定大小 (reserve()),如果可能的话

      std::vector<Platform*> 您可能应该在这里使用智能指针,但基本上分配自己并将指针存储在vector 中。

      【讨论】:

      • 我不是存储指针的人,Bullet 做到了。它的对象需要指向相关对象的指针。
      • @CarolineBengtsson 哦,我明白了
      • @CarolineBengtsson 我的新答案是否有更好的帮助?
      猜你喜欢
      • 1970-01-01
      • 2022-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多