摘要:
1.最好是不要让析构函数吐出异常,如果析构函数吐出异常而且程序没有结束,这会导致不明确的行为 当异常抛出时,本身函数就结束,函数里的后续处理就不会执行,这要是发生在析构函数里,可能因为 异常而导致后续的数据释放没有完成,造成内存泄露class Test{public: Test(){ p = new char[4]; } ~Test() { throw("exception"); //退出析构函数 delete p; //不会执行 }private: char *p;}; 两种不是很好的解决方法 (1) 结束整个程序:Test *p = new Test; ... 阅读全文