Про IDisposable
https://www.youtube.com/watch?v=hIE8gkcfwUI
Видео неплохое, но на мой вкус не отвечает на главный вопрос. А зачем вообще использовать IDisposable. Тут условно написано "ваша игра небезопасна", но что это значит?
Во времена деревянных игрушек (когда у нас C++ был в основном) памятью нужно было управлять вручную. Потом появился boost, умные указатели, аналоги сборщиков мусора, но это всё было не сразу. Появились Java и .Net. И эти языки (в отличии от плюсов) сказали: "Не парьтесь за память, мы решим всё за вас". И в них реализованы сборщики мусора, которые сами манипулируют управляемой частью памяти. Супер, классно, удобно, меньше погружения в то, как вообще работает компуктер, больше абстракций, кайф. Только есть нюанс, иногда чтобы избежать утечек мы хотим всё же чем-то управлять вручную. В среднем это файлы, сетевые подключения, дескрипторы ОС, графические ресурсы. GC освобождает что-то автоматически, а метод Dispose даёт больше ручного контроля. То есть это явный механизм освобождения ресурсов в мире GC.
Безопасность тут весьма косвенная. Есть кибератаки в утечки ресурсов, утечки памяти и RaceCondition, если делать всё без финализаторов, но это больше про атаки на сервера. В среднем для игр это всё не нужно, так же как и использование unsafe. Поэтому знать полезно, знания лишними не бывают, но пригодится вам это крайне редко. И понятие безопасности там тоже косвенное. В этом в целом прикол клиентских приложений. Хотите безопасность - делайте тонкий клиент, потому что если мозги хранятся в клиентском приложений, к которому у пользователя есть доступ, то взлом дело техники. И тут не нужно париться о таких видах атак.
Прямое управление памятью, использование IDisposable и того же unsafe в продакшен разработке игр не особо применимо, поэтому я бы особо не углублялся в эту тему. Это как нас в универе учили ассемблерным вставкам на плюсах. Инструмент весьма мощный, но в реалиях бизнеса не нужный. Потому что никому особо не нужно реализовывать что-то столь оптимальное и сложное, что только один человек в компании понимает, а как это вообще работает то)
Это для очень узких задач с точки зрения разработки. Поэтому можно на эту тему особо не париться. И тут как в меме. Если хотите поспорить, можно сделать это в комментах 🙂
#новости