当前位置: 首页 > 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/news/304359.html

相关文章:

  • 工作睡觉监测识别摄像机
  • 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 如何查询表被锁
  • Vue自定义组件:解密v-model,轻松实现双向数据绑定
  • Nacos rce-0day漏洞复现(nacos 2.3.2)
  • 如何准备技术面试?
  • 利用AI驱动智能BI数据可视化-深度评测Amazon Quicksight(二)
  • Stream流的思想和获取Stream流
  • 设计模式重新整理
  • 中秋出游热度十足!喆啡酒店如何巧妙捕捉多元旅游需求?
  • 遥感技术在生态系统碳储量、碳收支、碳排放、碳循环以及人为源排放反演等领域的技术发展,实践角度解决遥感技术在生态、能源、大气等领域的碳排放监测及模拟问题
  • C++ | Leetcode C++题解之第397题整数替换
  • Coggle数据科学 | 科大讯飞AI大赛:人岗匹配挑战赛 赛季3