首页 > 其他分享 >7.说说你了解的auto_ptr作用

7.说说你了解的auto_ptr作用

时间:2023-08-02 22:24:32浏览次数:21  
标签:对象 auto 了解 内存 析构 ptr 指针

7.说说你了解的auto_ptr作用

1.auto_ptr的出现,主要是为了解决“有异常抛出时发生内存泄漏”的问题;抛出异常,将导致指针p所指向的空间得不到释放而导致内存泄漏;

2.auto_ptr构造时取得某个对象的控制权,在析构时释放该对象。我们实际上是创建一个auto_ptr<Type>类型的局部对象,该局部对象析构时,会将自身所拥有的指针空间释放,所以不会有内存泄漏;

3.auto_ptr的构造函数是explicit,阻止了一般指针隐式转换为 auto_ptr的构造,所以不能直接将一般类型的指针赋值给auto_ptr类型的对象,必须用auto_ptr的构造函数创建对象;

4.由于auto_ptr对象析构时会删除它所拥有的指针,所以使用时避免多个auto_ptr对象管理同一个指针;

5.auto_ptr内部实现,析构函数中删除对象用的是delete而不是delete[],所以auto_ptr不能管理数组;

6.auto_ptr支持所拥有的指针类型之间的隐式类型转换。

7.可以通过*和->运算符对auto_ptr所有用的指针进行提领操作;

8.T* get(),获得auto_ptr所拥有的指针;T* release(),释放auto_ptr的所有权,并将所有用的指针返回

标签:对象,auto,了解,内存,析构,ptr,指针
From: https://www.cnblogs.com/codemagiciant/p/17601934.html

相关文章

  • 2.auto、decltype和decltype(auto)的用法
    2.auto、decltype和decltype(auto)的用法1.auto编程时常常需要把表达式的值赋给变量,这就要求声明变量时清楚的知道表达式的类型。然而有些情况是声明的变量的类型我们并不知道,比如在模板编程时。为了解决这个问题,C++11引入了auto类型说明符,用它来让编译器替我们去分析表达式所属......
  • 3.C++中NULL和nullptr区别
    3.C++中NULL和nullptr区别1.NULL是什么在《NULL,0,'\0',"0","\0"的区别》一文中,我们已经知道了在C中NULL是什么,在C的头文件中,通常定义如下:#defineNULL((void*)0)但是在C++中,它是这样定义的:#defineNULL0可以在stddef.h看到完整的这段:#undefNULL#ifdefined(__cplusp......
  • 4.可以说一下你了解的C++得内存管理吗?
    4.可以说一下你了解的C++得内存管理吗?1.一个由c/C++编译的程序占用的内存分为以下几个部分:C++中的内存分区,分别是堆、栈、自由存储区、全局/静态存储区、常量存储区和代码区。如下图所示栈:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自......
  • 了解什么是PR
    PR是Google排名算法的200多个因素之一,而且重要性已经下降很多。当然,PR还是Google排名算法中的重要因素之一。除了直接影响排名,PR的重要性还体现以下几点。(1)网站收录深度和总页面数。搜索引擎蜘蛛爬行时间及数据库的空间都是有限的。对大中型网站来说,首页PR值是带动网站收录的重要因......
  • .NET Core如何使用第三方容器Autofac
    首先先了解一下什么是AutofacAutofac用于在.NETCore应用程序中管理组件的生命周期和依赖关系。我们在开发一个项目的时在Program中注入依赖注入的生命周期,项目工程比较大的时候我们就要实现很多注入,最致命的缺点就是耽误太多时间,为解决这一问题的最好解决方法就是使用到Autof......
  • Spring框架你了解多少?
    Spring框架是当前Java领域应用最广的框架,它之所以那么成功,这主要是得益于它的设计理念。它的理念包括IoC(InversionofControl,控制反转)和AOP(AspectOrientedProgramming,面向切面编程)。下面我们就来一起学习下Spring这个优秀的开源框架。什么是Spring?Spring是分层......
  • 快速了解DevSecOps:构建安全软件开发的基石!
    关键词DevSecOps—在不影响敏捷性的前提下,将安全充分融入到SDLC的所有环节中SDLC—软件交付生命周期SCA—软件组成分析-用于识别和检测软件中使用的开源/第三方组件的已知安全漏洞SAST—静态分析安全测试DAS—动态分析安全测试IAST—交互式分析安全测试SBOM—在这里特......
  • Flask数据库连接(了解)
    Flask数据库连接(了解)g对象#g:global缩写,是关键字,不能用,就写成了g,对象,是一个全局对象,当此请求过程中,一直有效#作用:上下文 -其实是请求的上下文,从请求进来,就有,到请求走了,一直存在,所以在当次请求过程中,如果调用别的函数,不需要把参数传入,只需要放到g对象中,在别的函数中直接使......
  • @Autowired 和 @Resource的区别
    @Autowired和@Resource都可以用于注入Bean对象,并且都可以自动装配依赖关系,但他们主要的区别在于:1.使用的注解不同@Autowired是Spring提供的注解,而@Resource是JSR-250规范提供的注解。2.默认情况下注入的方式不同@Autowired默认按照类型装配依赖对象,当发现有多个Bean满足依......
  • 了解1688商品详情数据的看过来
    注册key和secret测试接口请求参数请求参数:num_iid=610947572360参数说明:num_iid:1688商品IDsales_data:&sales_data=1获取近30天成交数据agent:&agent=1获取1688分销代发价格数据响应参数Version:Date:名称类型必须示例值描述itemitem[]0宝贝详情数据num_iidString06109475723......