使用智能指针避免C ++中的内存泄漏

关于C ++的最经常表达的保留意见之一是很难“管理内存”。 诸如Java,C#和Golang之类的替代编程语言都是围绕运行时引擎构建的,这仅意味着在您的程序运行时,其下会有一个较大的程序,该程序负责后台的某些低级操作。 其中最基本的是“垃圾收集”。 当运行时确定不再使用内存时,垃圾收集器会定期释放内存,这样做确实非常准确,但并不总是完美的。 运行时如何确定是否正在使用内存? 我们在程序中创建的数据结构与“引用”或变量名绑定,并且在运行时中存在一种引用列表,这些引用当前在程序范围内。 根据该特定语言的规则,一旦引用“超出范围”,它就会成为垃圾回收的候选对象。 尽管此系统对于大多数应用程序都可以很好地运行,但这意味着您的程序必须定期扫描其引用列表并确定要清除的引用。 在具有许多引用的大型程序中,此暂停实际上可能会导致性能问题。 C ++向C引入了面向对象的类模式。这使开发人员可以编写复合的抽象层,从低级系统代码构建为代表更复杂数量级的对象,例如3D视频游戏中的角色。 但是,C ++在释放为这些结构分配的内存时始终由用户决定,并且随着它们变得越来越复杂并在单个程序中传递,越来越难以确保始终正确删除它们。 近年来,C ++标准已经扩展到包括避免这些问题的新工具。 我将不讨论所有这些内容,因为这是针对C ++的新手,他们对内存管理问题使其无法作为应用程序编程语言感到先入为主。…