【发布时间】:2010-09-14 10:58:30
【问题描述】:
我将一个对象 (TTF_Font) 存储在从第三方 API 提供给我的 shared_ptr 中。我不能在对象上使用 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对象)自然销毁?
【问题讨论】:
标签: c++ memory-management boost sdl-image