new/delete 完成对堆区内存的操作

本文详细介绍了C++中new和delete操作符的使用方法,包括如何使用new开辟不同类型的内存空间及初始化,以及如何使用delete来释放这些内存。通过具体实例展示了单个变量、数组以及多维数组的内存管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     c语言中提供的是malloc和free两个系统函数, 完成对堆区内存的申请和释放。而c++则提供了两个关键字new和delete

1、new/new []用法

   (1)、开辟单变量的地址空间

             int *p=new int;//开辟大小为sizeof(int)空间,相当于c语言中:int *p=(int *)malloc(sizeof(int));

             int *a=new int(5);//开辟大小为sizeof(int)空间,并初始化为5

   (2)、开辟数组空间

             一维: int *a=new int[100] {0};//开辟一个大小为100的整型数组空间

                        int **p=new int*[5]{NULL};

             二维: int  (*a)[6]=new int[5][6];

             三维: int  (*a)[5][6]=new int[3][5][6];

       四维及以上:依次类推。

2、delete/delete []用法

   (1)、int *a=new int;

             delete a;//释放单个int的空间

   (2)、int *a=new int[5];

             delete []a;//释放int数组空间

3、综合用法实例:

#include <iostream>

#include<string.h>
using namespace std;

int main()
{
    int *p=new int(5);//开辟大小为sizeof(int)空间,并初始化为5
    cout<<*p<<endl;
    delete p;

    char *pp=new char[10];//开辟一个大小为10的字符型数组空间
    strcpy(pp,"china");
    cout<<pp<<endl;
    delete []pp;

    string *ps=new string("china");
    cout<<*ps<<endl;
    cout<<ps<<endl;//输出指针首地址
    delete ps;

    char **pa=new char*[5];//开辟一个大小为5的字符型指针数组空间
    memset(pa,0,sizeof(char*[5]));
    pa[0]="china";
    pa[1]="america";
    char **pt=pa;
    while(*pt)
    {
        cout<<*pt++<<endl;
    }
    delete []pt;

    int (*q)[3]=new int[2][3];//开辟一个大小2x3的整型二维数组空间
    for(int i=0;i<2;i++){
        for(int j=0;j<3;j++){
            q[i][j]=i+j;
        }
    }
    for(int i=0;i<2;i++){
        for(int j=0;j<3;j++){
            cout<<q[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    delete []q;

    int (*qq)[3][4]=new int[2][3][4];//开辟一个大小2x3x4的整型三维数组空间
    delete []qq;

    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值