我正在使用由第三方API提供的shared_ptr
存储一个对象(TTF_Font
)。由于无法在对象上使用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
对象)自然销毁就可以了吗?