2010-02-17 119 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析構函數實現)。