Привет! Когда-то давно я уже писал статью про сырые и умные указатели, попытки использовать GC вместо них. Тогда я решил оставаться в С++ с сырыми указателями, а GC отвел место в скриптах. Но за долгое время я все больше и больше понимал что сырые указатели слишком опасны, тем более что мой движок позволяет писать игровой код на С++. Количество багов лишь подкрепляло уверенность что пора уходить от ручного управления памятью. Однако идеи про GC никак не оставляли в покое…
В статье я расскажу как переводил движок с сырых указателей на умные, разберу самые популярные концепции умных указателей, их особенности и подводные камни, и какой подход выбрал сам. Где в итоге здесь оказался GC и почему он не убивает производительность. А так же свои попытки напрячь ИИ для массового рефакторинга кода.