C++第01课 C++与C的区别(五)

1.new和delete基本用法

  new用来申请内存,delete用来释放内存

int main()
{
    int* p = new int;
    delete p;
    p = nullptr;

    int* pp = new int[4];
    delete []pp;
    pp = nullptr;

    //申请内存并初始化
    int* pData = new int(100);
    cout << *pData << endl;
    delete pData;
    pData = nullptr;

    int* ppData = new int[4]{ 1,2,3,4 };
    for (int i = 0; i < 4; i++) {
        cout << *(ppData + i) << endl;
    }
    delete[]ppData;
    ppData = nullptr;

    return 0;
}

 2.二维数组的申请过程

//用子函数实现二维数组内存申请
//返回值方式
int** myMalloc(int row, int col)
{
    int** p = new int* [row];
    for (int i = 0; i < row; i++) {
        p[i] = new int[col];
    }
    return p;
}
//传参方式
void myMalloc(int** &p,int row,int col)
{
    p = new int* [row];
    for (int i = 0; i < row; i++) {
        p[i] = new int[col];
    }
}
int main()
{
    int** p = new int* [4];
    for (int i = 0; i < 4; i++)
    {
        *(p + i) = new int[8];
    }
    for (int i = 0; i < 4; i++)
    {
        delete[] * (p + i);
    }
    delete p;

    return 0;
}

3.申请内存再做分配

int main()
{
    //这里的memory是假定的一段内存
    char* memory = new char[1024];
    //下面一行的意思是把memory内存的前10*4个字节用来存放整数
    int* pInt = new(memory) int[10];
    //下面一行表示从pInt后10*4个字节后申请10个字节用来存放字符
    //也可以写作char* pStr=new(memory+10*4) char[10];    其中4表示sizeof(int)
    char* pStr = new(pInt + 10) char[10];

    delete[]memory;
    return 0;
}
posted @ 2021-09-03 19:26  Creature_lurk  阅读(48)  评论(0)    收藏  举报