关于STL list中装载引用语义的删除讨论,该怎么处理

关于STL list中装载引用语义的删除讨论
前提:list中装载的引用语义(对象指针),非值语义,这里不是讨论值语义与引用语义。

请高手指点,下面的代码有没有内存问题。代码在BCB6.0中编译通过。

//---------------------------------------

#pragma   hdrstop

//---------------------------------------

#include   <list.h>
#include   <iostream.h>
#include   <algorithm.h>
#pragma   argsused

const   MAX_BUFFER_1   =   256;
const   MAX_BUFFER_2   =   65536;

class   _Parameter
{
private:
        char   *_name;
public:
        char*   __fastcall   name(void)   {   return   _name;   }

        __fastcall   _Parameter(char*   value)
        {
                _name   =   NULL;

                _name   =   new   char[strlen(value)   +   1];
                strcpy(_name,   value);
        }

        __fastcall   ~_Parameter()
        {
                std::cout   < <   "销毁对象: "   < <   _name   < <   std::endl;
               
                //释放对象资料
                if   (_name   !=   NULL)
                        delete[]   _name;

        }
};

template   <class   t>       //查找函数
class   findvalue
{
private:
        char   *_name;
public:
        findvalue(char   *name)   :   _name(name)   {   }
        bool   operator()(const   t*   ptr)   const
        {
                if   (strcmp(ptr-> name(),   _name)   ==   0)
                        return   true;
                else
                        return   false;
        }
};

template   <class   t>   //查找符合条件的容器项,并删除该项中的内容--对象指针。
class   removevalue
{
private:
        char   *_name;
public:
        removevalue(char   *name)   :   _name(name)   {   }
        bool   operator()(const   t*   ptr)   const
        {
                if   (strcmp(ptr-> name(),   _name)   ==   0)
                {
                        delete   ptr;     //在此外删除对象,可行吗?
                        return   true;