问题描述:
编译没有报错,运行出了这个问题。一开始慌得一匹,因为代码主要我在维护,而且功能包越写越多,我自己都记不太住。翻阅了Last commit,每次上传我写的commit自己大概能明白,不过还是很容易忘。先定位到修改的功能包,然后再看这个问题。
/usr/include/boost/smart_ptr/shared_ptr.hpp:734: typename boost::detail::sp_member_access::type boost::shared_ptr::operator->() const [with T = 某某类; typename boost::detail::sp_member_access::type = 某某类*]: Assertion `px != 0’ failed.
Aborted (core dumped)
原因分析:
这个问题就是空指针问题,指针使用不当。具体原因是使用boost::shared_ptr之后,没有进行正确的初始化。
大概知道了这个原因,就看每个功能包用到的boost::shared_ptr的地方。
果然,在某某类的头文件中声明了
boost::shared_ptr<XX类> var = NULL;
而在源文件中没有用boost::make_shared给指针初始化。直接用了这个空指针:
var->类中某函数();
找到了原因,就好解决了。在源文件中增加make_shared.
var = boost::make_shared<XX类>();//分配内存
var->类中某函数();//调用这个类的函数
版权声明:本文为weixin_44423355原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。