为什么在主函数创建一个指针对象的时候,在程序结束时不会自动调用析构?
程序代码:
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没有释放 不就造成内存泄漏了吗?求大佬帮忙解释下,多谢!