网上有丰富的资料, shared_ptr使用心得,
shared_ptr与删除器的问题
如果不是new方式创建,如何销毁?
例子:
// FileCloser.h FileCloser删除器
class FileCloser
{
public:
void operator()(FILE *pf)
{
if (pf)
{
fclose(pf);
}
}
};
// 某实现文件
{
boost::shared_ptr<FILE> fp(fopen(pszConfigFile, "r"), FileCloser()); // 指定调用FileCloser函数对象销毁资源
}
以上摘自网上,利用是仿函数的机制。
更简单的写法:
shared_ptr<FILE> pf(fopen("c:\\1.txt","a+"),fclose);
char buf[200]={"2342"};
fwrite(buf,1,200,pf.get());