这次碰到的一个coredump,发现单例模式对象的一个指针成员值是:0xaaaaaaaa,一看这个地址就是非法的地址。
原因是在其他线程访问这个单例对象的时候,成员变量还没有赋值,而且构造函数里没有对这个成员变量赋初值。导致单例的逻辑出现错误,虽然也判断了指针是否为nullptr,但是申请出来的内存里可能有垃圾数据,所以无法知道这个成员指针是否已经被初始化。
关于new的分析;
https://mzhan017.blog.csdn.net/article/details/128039787
对于单例模式,如果不能确保在构造函数里做初始化;
可以尝试将单例成员变量设置为static的变量;
这样就可以避免这个问题:
https://blog.csdn.net/qq_36428903/article/details/120937160#_24