Задать вопрос
@LanskoyGames
У модераторов первое место, но только с конца...

Что будет, если не удалять графические объекты при завершении программы в C++ SDL2?

Что будет, если не удалять графические объекты при завершении программы в C++ SDL2? Везде пишут, что нужно удалить, но когда говорят удаляйте динамические объекты, объясняют - иначе утечка памяти может быть, а здесь что?
  • Вопрос задан
  • 165 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
AshBlade
@AshBlade
Просто хочу быть счастливым
Очень сильно зависит от реализации.
Если внутри использовалась просто динамическая память и открывались файлы, то ничего - память освободит ОС, дескрипторы тоже.

Но если внутри использовались какие-нибудь глобальные структуры, то скорее всего система останется в несогласованном состоянии. Например, POSIX семафоры - они не освобождаются после завершения процесса.

Кроме того, либа работает с внешними устройствами - если что-то пойдет не так (не отправил нужный запрос на устройство), то может случиться что угодно. Например, просто намертво зависнет в бесконечном ожидании.
Ответ написан
@res2001
Developer, ex-admin
Система в большинстве случаев сама освободит почти все ресурсы при завершении программы. Есть исключения, но они довольно редки.

Но вот представьте ситуацию: прошел год и вы решили использовать код, который написали в этом проекте. Т.е. ваш старый код будет вызываться и завершаться в новом окружении (новой программе), но новая программа еще продолжит работать, а ресурсы не освобождены. И возможно новая программа захочет вызвать ваш старый код не один раз, а 1000 раз например. Вот тут-то вы и словите все утечки, которые оставили год назад.

Еще вариант: часто в embeded системах нет полноценной ОС и там нет такой роскоши как освобождение ресурсов при завершении процесса, т.к. часто нет и понятия процесса. Т.к. вы пишете на С++, то нельзя исключать, что когда-нибудь жизнь занесет вас в эту сферу.

Кстати, этот вопрос не связан конкретно с SDL, он вообще про все что угодно, что может быть захвачено и освобождено вашим процессом.

Так что освобождайте все что захватывает ваша программа явно в вашем коде и не надейтесь, что кто-то это сделает за вас.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Everything_is_bad
Что будет если не удалять вопросы Ланской Кирилл - он засрёт глупыми вопросами весь этот сайт.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы