C ++ Box2d управление памятью / сборка мусора

0

Имеет ли Box2d контрольный счетчик для автоматического удаления неиспользуемых тел и его приборов в версии C++?

Теги:
garbage-collection
memory-management
box2d

1 ответ

1
Лучший ответ

Непонятно, что вы подразумеваете под "неиспользованными"... телами остаются в мире, пока не назовете DestroyBody. Вызов DestroyBody освободит память, которую использует корпус, вместе со всеми приспособлениями и суставами, которые она имела. Ознакомьтесь с руководством Box2D и найдите "память" и "DestroyBody".

Тела также будут освобождены при удалении самого мира, и в этом случае вам не нужно вызывать DestroyBody для них.

  • 0
    Под unused я подразумеваю счетчик ссылок на этом теле, равный 0. Но, похоже, у Box2D нет подсчета ссылок. (Например, cocos2d определяет объекты autorelease. Если вы не используете объект autorelease, он будет собирать мусор.)
  • 0
    Нет, ничего подобного. Хотя технически вы можете обернуть b2Body * в своем собственном классе, если хотите использовать функции автоопределения, и сделать деструктор вызовом DestroyBody, я не уверен, будет ли это очень полезно. Существование тела означает, что в мире существует физическая вещь, которая может сталкиваться и взаимодействовать с другими вещами - вы, вероятно, захотите лучше контролировать, когда такие объекты входят и выходят из вашего мира. Я думаю, что лучше сделать преднамеренный вызов DestroyBody, чтобы удалить их.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню