【问题标题】:C++ Box2d memory managememnt / garbage collectionC++ Box2d 内存管理/垃圾收集
【发布时间】:2014-07-18 15:39:57
【问题描述】:

C++ 版本中 Box2d 是否有一个引用计数器来自动删除未使用的主体及其固定装置?

【问题讨论】:

    标签: c++ memory-management garbage-collection box2d


    【解决方案1】:

    不清楚你所说的“未使用”是什么意思...在你调用 DestroyBody 之前,尸体会一直留在这个世界上。调用 DestroyBody 将释放身体正在使用的内存,以及它拥有的所有固定装置和关节。查看 Box2D 手册并搜索“memory”和“DestroyBody”。

    当您删除世界本身时,实体也会被释放,在这种情况下,您无需为它们调用 DestroyBody。

    【讨论】:

    • unused 我的意思是该主体上的引用计数器为 0。但似乎 Box2D 没有引用计数。 (例如 cocos2d 定义了 autorelease 对象。如果你不使用 autorelease 对象,它将被垃圾回收。)
    • 不,没有那样的东西。虽然从技术上讲,如果您想使用自动指针功能并让析构函数调用 DestroyBody,您可以在自己的类中包装 b2Body*,但我不确定它是否非常有用。身体的存在意味着世界上存在可以与其他物体碰撞和相互作用的物理事物——你可能希望更好地控制这些物体何时进入和离开你的世界。我认为最好故意调用 DestroyBody 来删除它们。
    猜你喜欢
    • 2012-11-30
    • 1970-01-01
    • 2013-04-25
    • 2012-04-30
    • 2011-02-26
    • 2010-09-19
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多