![]() |
#2
Jonny02012018-10-05 01:09
|

class myc
{
public:
myc(char * str = "")
{
m_nSize = strlen(str);
m_pStr = new char[m_nSize + 1];
memcpy(m_pStr, str,m_nSize);
}
~myc()
{
delete[]m_pStr;
}
private:
char *m_pStr;
int m_nSize;
};
int main()
{
myc s1("hello world");
myc *s2=new myc("hello world");
// delete s2;
return 0;
}
问题:在执行myc s1("hello world")完后会自动调用析构!执行myc *s2=new myc("hello world")结束后为什么不会自动调用析构函数?加上delete s2时会调用析构函数释放内存,但是s2本身却没有被释放,如果s2没有释放 不就造成内存泄漏了吗?求大佬帮忙解释下,多谢!