首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有人能用通俗易懂的英语解释一下智能指针吗?

有人能用通俗易懂的英语解释一下智能指针吗?
EN

Stack Overflow用户
提问于 2011-02-15 22:56:42
回答 7查看 584关注 0票数 7

今天有人问我关于C++中的智能指针,我找不到任何关于它的有用信息。

有人能告诉我:什么是智能指针吗?您什么时间需要?你有没有什么例子说明智能指针是很有用的?

谢谢!

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-02-15 22:59:57

首先,智能指针可帮助您:

  • 在抛出异常时避免泄漏。当抛出异常时,您不希望之前在try块中分配的任何对象被泄漏。通过将它们包装在智能指针中,当退出try块时,智能指针将被销毁,这些对象将通过引用计算对象的所有者来获得正确的destroyed.
  • Manage生存期(即,最后一个销毁引用特定对象的智能指针的对象实际上释放了该对象)。这在松散耦合的情况下尤其有用,在这种情况下,不清楚对象应该在什么时候销毁,因为对象的用户彼此不知道。

智能指针有用的一个很好的例子:

指向对象的指针向量。例如,通过使其成为共享指针的向量,当该向量被销毁和/或对象被移除时,对象将被自动释放。这使对象生存期管理自动化,并帮助容器的用户避免内存泄漏。

票数 6
EN

Stack Overflow用户

发布于 2011-02-15 23:00:52

摘自Boost智能指针(smart_ptr)库:

智能指针是存储指向动态分配(堆)对象的指针的对象。它们的行为很像内置的C++指针,只是它们会在适当的时候自动删除指向的对象。智能指针在遇到异常时特别有用,因为它们可以确保正确地销毁动态分配的对象。它们还可用于跟踪由多个所有者共享的动态分配的对象。

从概念上讲,智能指针被视为拥有指向的对象,因此负责在不再需要该对象时删除该对象。

票数 3
EN

Stack Overflow用户

发布于 2011-02-15 23:00:52

智能指针通过跟踪指向内存的引用数来处理自己的内存管理。一旦有0个引用,它就会为你删除内存。使内存管理变得更容易。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5005186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档