2010-02-17 121 views
3

我最近开始使用SFML,并注意到没有提供任何种类的“FreeResource”方法。例如,sf::Font有一个称为LoadFromFile的功能,但没有释放该资源的功能。SFML释放资源

我觉得这很奇怪。我错过了什么吗?我唯一的选择是创建sf::Font指针并动态分配和删除它?

+2

我不知道SFML。但考虑一个'std :: vector';你是否需要手动释放这些资源?不,它在析构函数中完成。我怀疑你也一样。请注意,将它放在堆栈上没有什么不同,在行为方面比“新”,然后“删除”。 (除了现在你的代码不太安全。)这就是所谓的RAII。 – GManNickG 2010-02-17 02:53:47

+0

有时候我们需要在同一个上下文中使用相同类型的资源,但是它的实例不同。如果我有一个'sf :: Texture'需要更大一些,我不能简单地调整它的大小:我必须'删除'然后'创建(...)'一个新的。 – Litty 2015-08-30 19:09:40

回答

6

sf::Font将其字体数据存储在名为myGlyphs的std::map中(请参阅source)。当调用Font的析构函数时,该映射中的所有内容都将自动释放(由std::map析构函数实现)。