当前位置: 首页 > article >正文

C++特性--动态内存和智能指针

一、new和delete

        new和delete与c语言的内存管理函数malloc和free是类似的,都是用于内存的分配与释放。不同的是,new用于分配内存时,会进行对象的创建和销毁,也就是调用构造函数和析构函数。

        用法:如int* ptr=new int;待变分配了一个int类型的内存给一个指向int类型的指针。释放内存:delete ptr;

二、数组的动态内存分配

1.一维数组的动态内存分配

        用法:如int* ptr=new int[20];//分配长度为20的int类型内存;

                delete [] ptr//释放内存

2.二维数组的动态内存分配

        用法:int **array;
                // 假定数组第一维长度为 m, 第二维长度为 n
                // 动态分配空间
                array = new int *[m];
                for( int i=0; i<m; i++ )
                {
                            array[i] = new int [n];
                }
                //释放
                for( int i=0; i<m; i++ )
                {
                           delete [] array[i];
                }
                delete [] array;

三、智能指针

        智能指针(Smart Pointer)是 C++ 中的一种特殊指针类型,它通过自动管理内存的生命周期来防止内存泄漏和管理资源。智能指针的主要目的是解决传统指针在动态内存管理中存在的问题,比如忘记释放内存(导致内存泄漏)或重复释放内存(导致程序崩溃)。

  • std::unique_ptr:独占所有权的智能指针,同一时间只能有一个 unique_ptr 指向特定内存。
  • std::shared_ptr:共享所有权的智能指针,多个 shared_ptr 可以指向同一内存,内存在最后一个 shared_ptr 被销毁时释放。
  • std::weak_ptr:弱引用智能指针,用于与 shared_ptr 配合使用,避免循环引用导致的内存泄漏。

四、参考

        C++ 教程 | 菜鸟教程 (runoob.com);


http://www.kler.cn/a/304359.html

相关文章:

  • 【Linux系列】Shell 脚本中的条件判断:`[ ]`与`[[ ]]`的比较
  • ubuntu22.04上安装win10虚拟机,并采用noVNC+frp,让远程通过web访问桌面
  • 最新的强大的文生视频模型Pyramid Flow 论文阅读及复现
  • Docker数据库的主从复制
  • 【人工智能】使用Python构建推荐系统:从协同过滤到深度学习
  • 2024-12-24 NO1. XR Interaction ToolKit 环境配置
  • 工作睡觉监测识别摄像机
  • fly专享
  • 【三】TDengine 3.3.2 生产级别集群搭建
  • 【互联网的低潮期】
  • 相亲交友中的用户画像构建方法探讨
  • 【拥抱AI】使用Conda的一些常见命令
  • 如何判断硬盘是不是固态硬盘?介绍几种简单有效方法
  • Java多线程——模拟看病叫号
  • 聚鼎科技:现在做装饰画是靠谱的吗
  • pandas读取xlsx文件使用sqlachemy写到数据库
  • YOLOv5改进 | 模块缝合 | C3 融合RFAConv和CBAM注意力机制 【二次融合 小白必备】
  • 通过 汇编 分析 结构体
  • MongoDB根据字段内容长度查询语句
  • k8s 部署 ruoyi 前后端分离项目
  • 《企业实战分享 · SonarQube10.x 详细教程》
  • React 组件的基本使用,useState 状态变量的使用
  • 【Linux基础】02 权限
  • VUE+Tailwind网页开发
  • 大数据中一些常用的集群启停命令
  • oracle 如何查询表被锁