关于指针的内存泄露有关问题

关于指针的内存泄露问题.
在写一个返回类型的char *类型的函数碰到了这样的问题,代码:

class ListOperation{
private:
char *copy;
protected:
public:
ListOperation(){
copy=new char[CATEGORYMAX];
OperationNum=0;
}
~ListOperation(){
delete[]copy;
};
int OperationNum;
char* EatSpace(char* str);
};
.....
char* ListOperation::EatSpace(char* str){
int counter=0;
if(*(str)=='\n'){
copy='\0';
return copy;
}
else if(OperationNum==1||OperationNum==2){
copy=strstr(str,":")+1;
while(1){
if(*(copy+counter)==' '){
++counter;
}
else{
for(int i=0;strlen(str+counter)>i;++i)
*(copy+i)=*(copy+i+counter);
if(OperationNum==1){
*(copy+LIMITLENGTH)='\0';
}
if(OperationNum==2){
int Length=(strstr(copy,"Mailing List")-copy);
*(copy+Length)='\0';
for(int i=0;i<Length;++i){
if(*(copy+i)=='\n')
*(copy+i)=',';
if(*(copy+i)==' ')
for(int j=i;strlen(copy)>j;++j){
*(copy+j)=*(copy+j+1);
}
if(*(copy+i)==' ')
--i;
}
}
return copy;
}
}
}
return str;
}

我在构造函数里面初始化了copy 析构里面释放,但是每次调用还是有内存泄露:关于指针的内存泄露有关问题关于指针的内存泄露有关问题
本来想在函数里面用一个char 型数组代替copy指针,存储了数据,然后传递出去。但是发现数组用不了strstr...于是就放弃了...
花了一下午东弄西弄,但实在对内存不了解,找不到问题在哪,希望大大们帮忙看一下,刚学C++一星期,所以代码遗留很多C的风格..看起来很乱,希望大大们不要建议,十分感谢!
------解决思路----------------------
copy 在 EatSpace 里已经被搞坏了。

copy = '\0';
copy = strstr(str,":")+1;

copy 已经不是new 出来的指针了。