【问题标题】:SFML Releasing ResourcesSFML 发布资源
【发布时间】:2011-01-17 16:37:03
【问题描述】:

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

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

【问题讨论】:

  • 我不知道 SFML。但是考虑std::vector;您是否需要手动释放这些资源?不,它是在析构函数中完成的。我怀疑你也一样。请注意,在行为方面,将它放在堆栈上与 new 然后 delete 没有什么不同。 (除了现在您的代码不太安全。)这称为 RAII。
  • 有时我们需要在相同的上下文中使用相同类型的资源,但需要不同的实例。如果我有一个需要更大的sf::Texture,我不能简单地调整它的大小:我必须delete 然后create(...) 一个新的。

标签: c++ sfml


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    相关资源
    最近更新 更多