引言
实际开发过程中,会遇到千奇百怪的问题。有的是因为库与系统不匹配,有时是因为标准库存在不兼容问题,当然也有内存申请释放访问的问题。
大部分奇怪的问题并不是必现,有的跟机器相关,偶的甚至跟人品有关系。总之,我们经常要与千奇百怪的问题打交道。今天就说说产品落地中遇到的一个关于字符串赋值导致crash的问题。
问题来源
在android系统中,测试一个C++动态库时,出现segment fault或者Invalid Address free
等问题,最终定位crash的位置时在一个字符串赋值的位置。例如:
class O {
public:
void allfunction() = 0;
};
class AO : public O {
public:
void otherFunc() = 0;
private:
void setName(const std::string& name){
LOG("Before setName");
this->_name = name;
LOG