2010-02-17 4 views
3

Я недавно начал использовать SFML и заметил, что не существует никаких методов «FreeResource». Например, sf::Font имеет функцию, называемую LoadFromFile, но никаких функций для освобождения ресурса нет.Ресурсы, освобождающие SFML

Я думал, что это было очень странно. Я что-то упускаю? Является ли мой единственный способ создать указатель sf::Font и динамически распределять и удалять его?

+2

Я не знаю, SFML. Но рассмотрим 'std :: vector'; вам когда-либо нужно вручную освобождать эти ресурсы? Нет, это сделано в деструкторе. Я подозреваю то же самое для вас. Обратите внимание: наличие в стеке не отличается от поведения, а не 'new', а затем' delete'. (За исключением теперь ваш код менее безопасен.) Это называется RAII. – GManNickG

+0

Иногда нам нужен один и тот же ресурс в том же контексте, но в другом экземпляре. Если у меня есть 'sf :: Texture', который должен быть больше, я не могу просто изменить его размер: я должен« удалить »его, затем« create (...) »новый. – Litty

ответ

6

sf::Font хранит данные о шрифтах в std::map под названием myGlyphs (см. source). Когда вызывается деструктор Font, все на этой карте будет автоматически освобождено (деструктором std::map).