首页 > 编程语言 >C++——智能指针概述

C++——智能指针概述

时间:2022-10-30 17:01:31浏览次数:54  
标签:释放 C++ 智能 概述 析构 ptr 指针

C++指针分类

  • 原始指针(raw pointer)

  • 智能指针:智能指针是原始指针的封装,其优点是会自动分配内存,不用担心潜在的内存泄露

  • 并不是所有的指针都可以封装成智能指针,很多时候原始指针要更方便

  • 各种指针中,最常用的是裸指针,其次是unique_ptr和shared_ptr

  • weak_ptr是shared_ptr的一个补充,应用场景较少

普通指针的释放

  • 类内的指针,在析构函数中释放。
  • C++内置数据类型,如何释放? delete手工释放
  • new出来的类,本身如何释放? 必须delete调用析构函数

智能指针设计思路

  • 智能指针是类模板,在栈上创建智能指针对象。
  • 把普通指针交给智能指针对象。
  • 智能指针对象过期时,调用析构函数释放普通指针的内存。

标签:释放,C++,智能,概述,析构,ptr,指针
From: https://www.cnblogs.com/dh2021/p/16841630.html

相关文章

  • 【C Primer PLus 摘录】第 10 章 数组和指针(未完)
    CPrimerPlus摘录第10章数组和指针10.1数组数组由数据类型相同的一系列元素组成。通过声明数组告诉编译器数组中内含多少元素和这些元素的类型。编译器根据......
  • 【C++】右值引用
    来源于:https://zhuanlan.zhihu.com/p/3359943701.什么是右值引用左值可以取地址、位于等号左边。右值没法取地址、位于等号右边。有地址的变量就是左值,没有地址的字面......
  • C++哈夫曼树
    C++哈夫曼树【讨论问题3】二叉树的应用—哈夫曼树[问题描述]在数据通信系统中,电文传送是经常遇到的问题,传送电文时需要将字符转换成二进制组成的字符串,当然在传送电文......
  • 644 事件概述 and 645 事件_常见事件演示
    事件==》事件监听机制概念:某些组件被执行了某些操作后,触发某些代码的执行事件:某些操作。如:单击,双击,键盘按下了,鼠标移动了事件源:组件。如:按钮文本输入框......
  • c++左值、右值、右值引用
    c++左值、右值、右值引用前言这一部分对于规范代码、提高安全性、加速调试等方方面面都很重要、、问就是天天在引用和const上报红;出现诸如''表达式必须是lvalue或xval......
  • C++模板的偏特化与全特化
    全特化的目的:当为特殊类型时,需要特殊处理。偏特化的目的:固定几个类型,其他类型不确定。函数模板是不允许偏特化的,但函数允许重载,从而声明另一个函数模板即可替代偏特化的需......
  • C语言学习--文件操作--文件流指针--打开文件
    当打开一个文件时,系统会返回一个结构体,这个结构体有对此文件操作的所有信息调用fopen时,系统返回这个结构体的地址FILE*p=fopen("a.txt")   打开一个文件FIL......
  • 搞清楚基本单元:记得保存before; 快慢指针; 把长的截断使得两者一样长; 搞明白循环 |
    24.两两交换链表中的节点搞清楚基本单元:两个Node,记得保存beforehttps://leetcode.cn/problems/swap-nodes-in-pairs解题思路搞清楚基本单元:两个Node记得保存be......
  • DOM概述和DOM的Document对象获取Element方法
    DOM概述W3C DOM 标准被分为3个不同的部分:核心DOM-针对任何结构化文档的标准模型Document:文档对象Element:元素对象Attribute:属性......
  • 0089-Go-指针
    环境Time2022-08-23Go1.19前言说明参考:https://gobyexample.com/pointers目标使用Go语言的指针。示例packagemainimport"fmt"funczeroval(ivalint)......