reference与dereference--由空指针引出

【摘要】    最近遇到一个空指针问题,根据这个问题了解到reference与dereference所表示的具体含义

空指针问题报错的堆栈如下:

pid: 2433, tid: 2948, name: CamSensor  >>> /vendor/bin/hw/android.hardware.camera.provider@2.4-service <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
Cause: null pointer dereference
    r0  f1908270  r1  00000000  r2  00000001  r3  00000000
    r4  00000000  r5  00000000  r6  00000000  r7  00000000
    r8  f193e000  r9  5706443b  r10 ef5d4331  r11 ffffffff
    ip  ef5dc68c  sp  ef345820  lr  ef5a4bdd  pc  ef5a4e2a

backtrace:
    #00 pc 0001ce2a  /vendor/lib/hw/camera.****.so (android::Sensor::threadLoop()+1058)
    #01 pc 0000c013  /system/lib/vndk-sp-28/libutils.so (android::Thread::_threadLoop(void*)+290)
    #02 pc 00063685  /system/lib/libc.so (__pthread_start(void*)+22)
    #03 pc 0001dfd9  /system/lib/libc.so (__start_thread+24)

反编译出地址如下,在行34、37上

到底是哪个为空的?数组还是数组中元素

首先采用的方法是使用IDA,把symbols反编译出来,对照汇编语言查看,硬看也只是能看懂一部分

后来遇到一篇文章《引用:&(reference)与间接引用:*(dereference)》

《Effective C++》中也有讲

发现tombstone中报错信息是”空指针的间接引用”,那就是间接引用的地方是空

即引用不能为空(NULL),引用必须与合法的存储单元关联,指针则可以是NULL)

 

知道错误行后,就可以进行修改了,具体修改如下:

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

seiyaaa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值