相关疑难解决方法(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万
查看次数

测试有效性指针(C/C++)

如果指定的指针是"有效的",有没有办法确定(当然是以编程方式)?检查NULL很简单,但像0x00001234这样的东西呢?当试图取消引用这种指针时,会发生异常/崩溃.

首选跨平台方法,但平台特定(适用于Windows和Linux)也可以.

更新澄清: 问题不在于陈旧/释放/未初始化的指针; 相反,我正在实现一个从调用者获取指针的API(比如指向字符串的指针,文件句柄等).调用者可以(有意或无意地)发送无效值作为指针.如何防止崩溃?

c c++ validation null pointers

80
推荐指数
10
解决办法
10万
查看次数

是否可以确定指针是否指向有效对象,如果是,如何确定?

我正在阅读C++ 是否可以确定指针是否指向有效对象?该线程中的正确答案是不,你不能这样做,但该线程现在已经很旧了,我想知道是否有任何更改。我读到用智能指针这是可能的。那么如何才能实现这一目标呢?

c++ pointers smart-pointers

-1
推荐指数
1
解决办法
192
查看次数

标签 统计

c++ ×3

pointers ×2

smart-pointers ×2

c ×1

c++11 ×1

null ×1

performance ×1

validation ×1