我对c ++比较陌生,并且在一个特别大的现有项目中被抛入深层。在某些工作中,我遇到了导致段错误的代码:
boost::shared_ptr<Foobar> foo = boost::shared_ptr<Foobar>(new Foobar(bar));
出现如下错误:
#0 shared_count (r=..., this=0xb2e265c4) at .../boost/include/boost-1_55/boost/smart_ptr/detail/shared_count.hpp:382
382 .../boost/include/boost-1_55/boost/smart_ptr/detail/shared_count.hpp: No such file or directory.
in .../boost/include/boost-1_55/boost/smart_ptr/detail/shared_count.hpp
#1 shared_ptr (this=0xb2e265c0) at .../boost/include/boost-1_55/boost/smart_ptr/shared_ptr.hpp:329
#2 FooHandler::doAThing (this=0xb2e27310) at .../fooHandler.cpp:42
但是,当我将其更改为:
boost::shared_ptr<Foobar> foo;
foo = boost::shared_ptr<Foobar>(new Foobar(bar));
完美无缺。
我的问题是,在自定义变量foo
和在为其分配值的同时定义它之间是否存在一些差异,这可能会导致这类问题?