与 C++ 11中的普通指针相比,智能指针的开销有多大?换句话说,如果我使用智能指针,我的代码会变慢吗? 如果是的话,会慢多少?
具体来说,我要问的是 C++ 11 std::shared_ptr
和 std::unique_ptr
。
显然,堆栈下面的内容会更大(至少我是这么认为的) ,因为智能指针也需要存储它的内部状态(引用计数等) ,问题是,这会对我的性能有多大影响,如果有的话?
例如,我从函数返回一个智能指针,而不是普通指针:
std::shared_ptr getValue();
// versus
const Value *getValue();
或者,例如,当我的一个函数接受智能指针作为参数而不是普通指针时:
void setValue(std::shared_ptr val);
// versus
void setValue(const Value *val);