分析linux/android C层的死机堆栈问题
经常会遇到linux下c++代码死机的问题,
通过addr2line转化工具转成相应的函数名
但是很多时候最后一样有问题的代码恰恰是一个
读取变量的函数 如
Class A
{
bool m_hasMoney;
bool checkMoney() const {return m_hasMoney;}
}
Class B
{
A* a() const {return m_a;}
void doSomthing() { .....;a()->checkMoney();....}
}
死机堆栈最后显示是
A::checkMoney() const
于是就很奇怪了,为什么获取m_hasMoney也会死机呢?
m_hasMoney只是一个布尔值 他的地址空间是获创建对象A的时候分配的,那应该是整个a对象被回收了,但是如果class B的m_a是null的话,怎么会顺利执行checkMoney()这个函数呢?
求教