C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了浅谈C++ auto_ptr智能指针大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@L_419_0@ 还提供了另一个模板类:auto_ptr 类该类主要用于管理动态内存分配。

如果使用 new() 函数分配堆中的内存,而又不记得回收这部分内存,会导致内存泄漏。因此必须使用 delete 语句释放该内存块。即使在函数末端添加delete 语句释放内存,还需要在任何跳出该函数的语句(如抛出异常)之前添加释放内存的处理,例如 goto 语句和 throw 语句。

auto_ptr 模板定义了类似指针的对象,将 new 获得的地址赋给该对象。当 auto_ptr 对象过期时,析构函数将使用 delete 来释放内存。如果将 new 返回的地址赋值给 auto_ptr 对象,无须记住还需要释放这些内存。在 auto_ptr 对象过期时,内存将自动被释放。

C++ 语言中,要使用 STL 中的 auto_ptr 对象,必须包含头文件 <memory>,该文件包括 auto_ptr 模板。使用通常的模板句法来实例化所需类型的指针。auto_ptr 构造函数是显式的,不存在从指针到 auto_ptr 对象的隐式类型转换。
@H_301_13@ auto_ptr <double> pd;
double *p_reg = new double;
pd = p_reg; // 不允许
pd = auto_ptr <double> (p_reg); //允许
auto_ptr <double> panto =p_reg; //不允许
auto_ptr <double> pauto (p_reg); //允许

模板可以通过构造函数将 auto_ptr 对象初始化为一个常规指针。auto_ptr 是一个智能指针,但其特性远比指针要多。值得注意的是,在使用 auto_ptr 时,只能配对使用 new 和 delete。
@H_301_13@ 提示,只能对 new 分配的内存使用 auto_ptr 对象,不要对由 new() 分配的或通过声明变量分配的内存使用它。

总结

C++ 库中的 auto_ptr 对象是一种智能指针。智能指针是一种类,即其对象的特征结类似于指针。智能指针存储 new 分配的内存地址,也可以被解除引用。

智能指针是一个类对象,可以修改和扩充简单指针的行为。智能指针可以建立引用计数,这使得多个对象可共享由智能指针跟踪的同一个值。当使用该值的对象数为 0 时,智能指针将删除该值。

智能指针可以提高内存的使用效率,帮助防止内存泄露。

大佬总结

以上是大佬教程为你收集整理的浅谈C++ auto_ptr智能指针全部内容,希望文章能够帮你解决浅谈C++ auto_ptr智能指针所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: