一、程序突然挂了,没报出错信息
现场:在运行一段代码,前几次成功运行,后面突然就死掉了,没有进入到do_something()函数中就中断了。检查content的内存也没有被破坏。
class myclass{
public:
...
void fun();
Content * content;
...
}
...
void myclass::fun(){
...
content_->do_something(return, request);
...
}
原因:content_这个成员变量是一个单例对象,所有myclass的对象共用一个content,而我在myclass的析构函数中执行delete语句,将content_这个单例对象释放了,导致一旦一个myclass的对象析构,将导致其它myclass对象的成员content_内存无效,虽然content_的内存没有破坏(还没来得及破坏),但是该地址已经无效,导致最终出错。
总结:写c++程序要注意在析构函数中释放资源,但是要注意,如该成员是一个指向单例的指针,不能随便释放,否则引起出错。
二、