1
3
使用智能指针无疑是清理应用程序的一个良好开端,但它们并不是万能的。大量的内存泄漏可能只是一个设计良好的程序中的粗心大意,但更可能的是您有重大的设计问题,内存泄漏就是一个症状。当您切换到智能指针时,您仍然需要做出诸如“谁拥有此对象”、“此对象的所有权是否在多个客户端之间共享”和“此对象的预期寿命是多少”之类的设计选择,以便为给定场景选择正确的智能指针实现。但这将是一个很好的开始,因为为不同的情况选择合适风格的智能指针的过程将迫使您考虑这些问题,并可能会改进您的设计。 |
2
2
根据我的经验,大多数内存泄漏都遵循一定的模式(开发人员a遗漏了一些东西,开发人员B复制了这些代码,同时也带来了问题)。因此,在考虑使用智能指针之前,使用工具可以先解决内存泄漏问题。 如果你开始开发这个应用程序-从使用智能指针开始。它们将为您节省大量的时间和精力。 |
3
2
有一件事你想避免
另一个要考虑的是替换
|
4
1
视情况而定,如果对对象的硬引用阻止垃圾回收器释放它,垃圾回收的程序仍可能存在内存泄漏。如果您想找出内存泄漏发生在哪里,请使用探查器或编写单元测试和模拟对象。 Edit:要获得智能指针的好处,还必须引入或实现自己的垃圾收集器,因为它不是语言特性。 编辑2:智能指针显然实现了引用计数,这是一种垃圾收集策略。 |
5
0
|
Andre · Boost日志琐碎自动刷新 6 年前 |
Vitor · 如何使用boost::bind追加参数? 6 年前 |
slepasteur · 提高MSM编译速度 6 年前 |
werk jlcv · 如何快速删除数百万个文件 6 年前 |
hromer · 我的Boost正则表达式与任何内容都不匹配 6 年前 |
user997112 · 使用互斥量和条件变量跨内存提升进程间共享向量 6 年前 |