```cpp
#include<bits/stdc++.h>
using namespace std;
class CMyString{
public:
CMyString(){
m_pString = new char[10];//构造函数有申请堆内存分配指针的动作
if(m_pString==nullptr){
return;
}
strcpy(m_pString, "hellow");
}
~CMyString(){
if(m_pString!=nullptr){
delete m_pString;//析构函数有回收内存,指针置空的动作
m_pString = nullptr;
}
}
char* GetString(){
return m_pString;
}
private:
char *m_pString;
};
void ShowMystring(CMyString MyStringCpy){//进入函数的时候直接复制了对象,复制了一个新指针数值等于原来的但是新指针与原指针指向统一内存
printf("%s",MyStringCpy.GetString());
}//析构时,新指针指向内存回收,新指针置空,老指针数值没有置空,但是内存以回收
int main(){
CMyString mstring;
ShowMystring(mstring);
}//主函数结束,回收老指针出错