相关疑难解决方法(0)

与C++中的普通指针相比,智能指针的开销是多少?

与C++ 11中的普通指针相比,智能指针的开销是多少?换句话说,如果我使用智能指针,我的代码会变慢吗?如果是这样,速度会慢多少?

具体来说,我问的是C++ 11 std::shared_ptrstd::unique_ptr.

显然,推下堆栈的东西会变得更大(至少我认为是这样),因为智能指针也需要存储其内部状态(引用计数等),问题是,这是多少影响我的表现,如果有的话?

例如,我从函数而不是普通指针返回一个智能指针:

std::shared_ptr<const Value> getValue();
// versus
const Value *getValue();
Run Code Online (Sandbox Code Playgroud)

或者,例如,当我的一个函数接受智能指针作为参数而不是普通指针时:

void setValue(std::shared_ptr<const Value> val);
// versus
void setValue(const Value *val);
Run Code Online (Sandbox Code Playgroud)

c++ performance smart-pointers c++11

88
推荐指数
5
解决办法
3万
查看次数

在lambda函数中使用auto self(shared_from_this())变量的原因是什么?

我阅读了boost asio http服务器示例代码(参见http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/example/cpp11/http/server/connection.cpp)并找到auto self(shared_from_this());变量是已在捕获范围([this, self])中使用.但自变量未在lambda函数中使用.那么这样做有什么好处?

c++ lambda boost boost-asio c++11

24
推荐指数
1
解决办法
4796
查看次数

标签 统计

c++ ×2

c++11 ×2

boost ×1

boost-asio ×1

lambda ×1

performance ×1

smart-pointers ×1