21xrx.com
2024-12-22 23:06:10 Sunday
登录
文章检索 我的文章 写文章
C++中如何使用new动态分配二维数组
2023-07-04 14:41:58 深夜i     --     --
C++ new 动态分配 二维数组

在C++中,使用new运算符可以动态分配内存。我们可以使用new运算符动态分配一位数组或者多维数组。在本文中,我们将学习如何使用new动态分配二维数组。

二维数组是由多个一位数组构成的数组。我们可以使用new运算符来动态分配二维数组。下面是一个简单的例子,展示如何使用new运算符动态分配二维数组:


int row = 3;

int col = 3;

int** ptr = new int*[row];

for(int i = 0; i < row; ++i){

  ptr[i] = new int[col];

}

在上面的代码中,我们定义了一个3x3的二维数组。首先,我们使用new运算符动态分配了一个指向指针的指针数组。这个指向指针的指针数组的元素是指向int数组的指针。然后,我们再使用for循环遍历数组,并为每一个指针分配一个int数组。在这个例子中,我们定义了一个名为ptr的二维数组。通过ptr[1][2],我们可以访问这个数组的第二行第三列。

现在,让我们修改上面的代码,来动态分配一个不规则的二维数组。不规则的二维数组是指每一行的列数都可以不同。下面的代码展示了如何动态分配一个不规则的二维数组:


int row = 3;

int* col = new int[row];

col[0] = 2;

col[1] = 4;

col[2] = 3;

int** ptr = new int*[row];

for(int i = 0; i < row; ++i){

  ptr[i] = new int[col[i]];

}

在上面的代码中,我们首先动态分配一个包含3个元素的int数组col。然后,我们定义了一个指针的指针数组ptr。我们使用for循环分配每一行的列数,并分配二维数组的内存。通过ptr[1][2],我们可以访问这个不规则的二维数组的第二行第三列。

当我们不再需要这个数组时,我们需要释放它的内存以避免内存泄漏。下面是一个释放二维数组内存的例子:


int row = 3;

int col = 3;

int** ptr = new int*[row];

for(int i = 0; i < row; ++i){

  ptr[i] = new int[col];

}

for(int i = 0; i < row; ++i){

  delete[] ptr[i];

}

delete[] ptr;

在上面的代码中,我们使用delete[]运算符释放二维数组的内存。首先,我们使用for循环遍历二维数组,然后使用delete[]运算符释放每一行的内存。最后,我们使用delete[]运算符释放一维数组的内存。这样,我们就释放了整个二维数组的内存。

总的来说,使用new运算符可以在运行时动态分配内存,这使得我们可以动态创建二维数组。如果我们需要动态分配一个不规则的二维数组,使用new运算符分配内存也是非常方便的。我们只需要动态分配一个指针数组,然后再为每一行分配内存即可。在不再需要这个数组时,我们必须使用delete[]运算符释放内存。这确保了我们可以避免内存泄漏问题。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复