Как я недавно начал развиваться в Cocos2d, одной из первых особенностей, которые я нашел очень своеобразной, была модель памяти пула Autorelease Objective-C. Во всем моем опыте работы с C++ я избегал использования любой формы распределения динамической памяти, если АБСОЛЮТНО не требуется (что на самом деле очень редко).В чем преимущества модели памяти Cocos2d-x?
Сначала я был озадачен, почему Cocos2D не воспользовались более безопасных альтернатив для создания объектов указателей (например, смарт-указатели), но потом я наткнулся на this нить, на которой обсуждались недостатки shared_ptr<class T>
(наиболее значительные из которая была скоростью) по текущей парадигме памяти в отношении ручных методов сохранения/освобождения.
Тогда я подумал: «Почему бы просто не выделить объект регулярно и передать и сохранить его ссылку, когда это необходимо?» Я понимаю, что было бы очень трудоемкой переносить всю систему памяти Cocos2d-x на новую парадигму, но в долгосрочной перспективе не стоит ли использовать более стабильный идиоматический код на C++?
В чем все дело доходит до того, каковы преимущества текущей модели памяти в отличие от обычного распределения объектов?