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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值