android中if判断引起的crash
来源:互联网 发布:mysql my.cnf 路径 编辑:程序博客网 时间:2024/06/16 13:22
在Android debug过程中有如下的crash.
11-05 03:11:24.271 1262 1262 F DEBUG : #00 pc 00022234 /system/lib/libstagefright_omx.so (android::OMXNodeInstance::onEvent(OMX_EVENTTYPE, unsigned int, unsigned int)+1011)
11-05 03:11:24.271 1262 1262 F DEBUG : #01 pc 00018145 /system/lib/libstagefright_omx.so (android::OMX::OnEvent(unsigned int, OMX_EVENTTYPE, unsigned int, unsigned int, void*)+56)
通过addr2line -e libstagefright_omx.so 00022234看到是因为,if(mName)的判断造成的。
看到函数源码以后,一时有点丈二摸不着头脑了,函数内部就一个if判断,何来的crash?
网上搜了下,正好有碰到相似的问题,原因如下:
这个函数如此调用:this->OnEvent(xxxx); 当this指针为空时,并不是在函数调用这行CRASH,而是在成员函数内部。
原理《C++对象模型》书中有讲解:C++中类的成员函数和成员变量不太一样,成员变量定义在对象内部,跟对象一个级别,与this指针有关;而成员函数则定义在类内部,跟类一个级别,与this指针无关。换个角度理解这句话,即使对象指针为空,通过空对象指针访问成员函数也是可以,只有当成员函数内部需要访问成员变量时才会CRASH,因为成员变量定义在对象内部。这个道理我懂,但怎么也跟空指针联系起来!
参考:http://blog.csdn.net/ryfdizuo/article/details/9011425
- android中if判断引起的crash
- thinkphp中模板中if判断没有反应,原来是数组访问方式引起的
- Android createWindowSurface failed EGL_BAD_ALLOC 引起Crash的解决方案
- Android createWindowSurface failed EGL_BAD_ALLOC 引起Crash的解决方案
- okhttp addHeader 字符串中含有中文引起的Crash
- gstreamer中由gstbuffer unref引起的crash分析
- ARMv8引起的crash问题
- 下标方式引起的crash的原因
- JS+Thinkphp 中 if的判断
- shell中if判断的参数
- JS+Thinkphp 中 if的判断
- js中if的条件判断
- jst中,if的判断条件
- 【shell】脚本中if条件的判断
- python中if语句的真假判断
- mybatis中if判断的坑
- 一个容器Crash引起的思考
- 异步事件引起的plugins crash问题
- java面向对象2
- Lesson16 Norm computations
- 黑马程序员——高新技术----枚举及部分JDK新特性
- java面向对象3
- HLSL bytecode to GLSL编译器的第一步
- android中if判断引起的crash
- java面向对象4
- mysql order by注入技巧
- java面向对象5
- HLSL Compiler
- java面向对象6
- HLSL Attributes (Xbox 360)
- Android HandlerThread
- POJ---2418-Hardwood Species(字典树)