C/C++日常疑问:程序员不建议代码中使用指针,这是为什么?

C/C++日常疑问:程序员不建议代码中使用指针,这是为什么?

尽量避免在大多数代码中使用指针实现。

使用现代C ++,您几乎不需要传递指针,可以依赖引用,并且编译器本身可以进行优化以避免不必要的复制和自动转移所有权。但不总是。

智能指针的用例仍然存在。如果必须动态创建对象并将其返回到调用堆栈,则希望它们在超出范围时释放自己。如果找不到确定的位置来删除对象,或者无法确定要删除该对象的对象,那么智能指针是一个很好的解决方案。

unique_ptr的一些优点是:

您知道您的smart_ptr将持续存在,直到不再位于任何范围内,并且没有函数或类会意外地将其销毁。

整个代码路径中指向的对象将只有一个销毁。

unique_ptr并不是一个真正的指针,它的行为就像一个透明的指针,将调用转发到它所连接的对象。它不能“悬挂”并且不能为空。

unique_ptr的开销几乎与原始指针相同,即几乎没有。没有使用原始指针的加速。

shared_ptr用于由多个线程,对象等共享(更震惊!)的资源。它们在时间和内存上的使用比unique_ptr昂贵,但是它们解决了在使用对象的函数结束时保持活动对象的难题。他们为我们提供了一个参考计数器和原子访问。在垃圾回收语言中,引用计数由运行时线程保留,但C ++ shared_ptr保留其引用计数。在大多数程序中,shared_ptr的用例少于unique_ptr。

如何避免使用智能指针泄漏:

通常,他们为您完成工作,

相关推荐

DNF90级死灵术士刷图加点推荐
365bet线路检测

DNF90级死灵术士刷图加点推荐

📅 07-30 👁️ 1048
「库」字组词
365bet滚球网

「库」字组词

📅 10-04 👁️ 7395
乒乓球世界杯夺冠创造历史的巴西人雨果
365bet线路检测

乒乓球世界杯夺冠创造历史的巴西人雨果

📅 08-30 👁️ 1695
吉他品牌型号识别指南:从琴头标志到专业咨询
365bet线路检测

吉他品牌型号识别指南:从琴头标志到专业咨询

📅 09-27 👁️ 1009
铝合金商务本 华硕13.3英寸U303LA破4K3
365bet体育在线主页

铝合金商务本 华硕13.3英寸U303LA破4K3

📅 07-16 👁️ 8746
吉他品牌型号识别指南:从琴头标志到专业咨询
365bet线路检测

吉他品牌型号识别指南:从琴头标志到专业咨询

📅 09-27 👁️ 1009
a4纸多少克
365bet体育在线主页

a4纸多少克

📅 09-28 👁️ 2618
为什么好多女孩子身上有一股奶香味?
365bet体育在线主页

为什么好多女孩子身上有一股奶香味?

📅 09-16 👁️ 9663