C++——new &&delete

本文主要介绍C++中的new和delete,用于内存的申请和释放

1. 变量

示例

void variableFunc()   //变量的使用
{
    int* ptr = new int;
    *ptr = 100;
    std::cout<<"ptr value is: "<<*ptr<<std::endl;
    delete ptr;   //释放
}

ptr 是一个指向 int 类型的指针,通过 new 运算符动态分配了一个 int 类型的对象,并将其地址赋值给 ptr;

ptr 指向了这个动态分配的 int 对象。我们可以通过 *ptr 来访问和修改这个对象的值;

2. 一维数组

示例

void oneDimArray()   //一维数组的使用
 {
    int size = 5;

    // 动态分配一维数组
    int* arr = new int[size];

    // 对数组进行操作
    for (int i = 0; i < size; i++) {
        arr[i] = i;
        std::cout << arr[i] << " ";
    }

    // 动态释放一维数组
    delete[] arr;    
 }

在这个示例中,使用 new 运算符动态分配了一个大小为 sizeint 类型的一维数组。使用 delete[] 运算符来释放动态分配的一维数组空间。

3. 二维数组

示例

void towDimArray()   //二维数组变量的使用
 {
    int rows = 3;
    int cols = 4;

    // 动态分配二维数组
    int** matrix = new int*[rows];
    for (int i = 0; i < rows; i++)
    {
        matrix[i] = new int[cols];
    }

    // 对二维数组进行操作
    for (int i = 0; i < rows; i++) 
    {
        for (int j = 0; j < cols; j++) 
        {
            matrix[i][j] = i + j;
            std::cout << matrix[i][j] << " ";
        }
        std::cout << std::endl;
    }

    // 动态释放二维数组
    for (int i = 0; i < rows; i++) 
    {
        delete[] matrix[i];
    }
    delete[] matrix;
 }

在这个示例中,使用 new 运算符动态分配了一个大小为 rows * colsint 类型的二维数组。需要先动态分配一个 int* 数组,然后再为每一行动态分配内存。

在对二维数组进行操作后,我们需要逐行释放内存,然后释放一维数组(行数组)的内存。

需要注意的是,在动态分配二维数组时,一定要记得逐行释放内存,以避免内存泄漏。同时,对于每个一维数组,我们使用 delete[] 运算符进行释放。

你可能感兴趣的:(C++,c++,开发语言)