boost::shared_ptr の参照カウンタがゼロになったときに、
delete 以外の解放処理を行わせる方法はありますでしょうか。

extern IMalloc* allocator;
{
boost::shared_ptr<ITEMIDLIST> pidl((ITEMIDLIST*)allocator->Alloc(10));
}
//ここでallocator->Freeを呼ばせたい