空指针,指针使用不当 Assertion `px != 0‘ failed. Aborted (core dumped)

问题描述:

编译没有报错,运行出了这个问题。一开始慌得一匹,因为代码主要我在维护,而且功能包越写越多,我自己都记不太住。翻阅了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->类中某函数();//调用这个类的函数

你可能感兴趣的:(C++笔记,c++)