我将一个对象 ( TTF_Font
) 存储在shared_ptr
从第三方 API 提供给我的 a 中。我不能在对象上使用 new 或 delete,因此shared_ptr
还提供了一个“释放”函子。
// Functor
struct CloseFont
{
void operator()(TTF_Font* font) const
{
if(font != NULL) {
TTF_CloseFont(font);
}
}
};
boost::shared_ptr<TTF_Font> screenFont;
screenFont = boost::shared_ptr<TTF_Font>( TTF_OpenFont("slkscr.ttf", 8), CloseFont() );
如果稍后我需要显式释放此对象,这样做是否正确:
screenFont.reset();
然后让screenFont
(实际shared_ptr
对象)自然销毁?