指针引起的崩溃分析

指针引起的崩溃问题,常见的原因如下:

指针未判空

劳资还没干货呢,你就让劳资干活了。
这种情况实际项目当中是非常多的,即使你用了智能指针,也还是无法避免。当工程很庞大复杂而且一个类都有可能多个人负责的时候,那么这个指针的访问堆栈确实千变万化,你无法确定是哪里调到这里来的,也就无法确保该指针一定指向了某一对象,当然判空不一定能解决这类问题的逻辑错误,但是至少能保证不会在这里崩溃。

指针野了

野孩子还到处乱跑,不出问题才怪。
野指针的原因有简单的也有复杂的,单线程内这个问题其实很好解决,怕的就是多线程,多处都存在释放这个对象的可能,偶现了崩溃直接看代码根本无法确定是哪里多管闲事释放了该对象,而此时的dump文件也无能为力,因为dump也无法告诉你这个对象到底是在哪里释放了,只能告诉你在这里指针野了,崩溃了。遇到这类偶现问题,一个好的方案是可以打出一个测试版本,在所有释放该对象的地方强制崩溃,这样就有可能捕获到是哪个小婊砸在意料之外释放了。仅供参考的一个小技巧。

虚表被玩儿坏了

当然这种说法是欠准确的,你一个类的虚表被破坏了那可真是奇了个葩,更多可能是虚指针乱了,有可能你“任性”的做了类型转换,导致这个指针根本不应该访问那个类的虚函数,但是强制类型转换用的又是如此的顺手,只能祈祷你自己编码更加规范,思路更加严谨了。另一个原因,就是其他地方越界了,非法写入导致这个指针内容被破坏了,这时候不崩溃才怪呢。

你可能感兴趣的:(对象,Class,指针)