3
我最近开始使用SFML,并注意到没有提供任何种类的“FreeResource”方法。例如,sf::Font
有一个称为LoadFromFile
的功能,但没有释放该资源的功能。SFML释放资源
我觉得这很奇怪。我错过了什么吗?我唯一的选择是创建sf::Font
指针并动态分配和删除它?
我最近开始使用SFML,并注意到没有提供任何种类的“FreeResource”方法。例如,sf::Font
有一个称为LoadFromFile
的功能,但没有释放该资源的功能。SFML释放资源
我觉得这很奇怪。我错过了什么吗?我唯一的选择是创建sf::Font
指针并动态分配和删除它?
sf::Font
将其字体数据存储在名为myGlyphs的std::map
中(请参阅source)。当调用Font的析构函数时,该映射中的所有内容都将自动释放(由std::map
析构函数实现)。
我不知道SFML。但考虑一个'std :: vector';你是否需要手动释放这些资源?不,它在析构函数中完成。我怀疑你也一样。请注意,将它放在堆栈上没有什么不同,在行为方面比“新”,然后“删除”。 (除了现在你的代码不太安全。)这就是所谓的RAII。 – GManNickG 2010-02-17 02:53:47
有时候我们需要在同一个上下文中使用相同类型的资源,但是它的实例不同。如果我有一个'sf :: Texture'需要更大一些,我不能简单地调整它的大小:我必须'删除'然后'创建(...)'一个新的。 – Litty 2015-08-30 19:09:40