C中的2D动态内存分配数组

前端之家收集整理的这篇文章主要介绍了C中的2D动态内存分配数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
几天前,我学会了如何从互联网创建2D分配的内存阵列,它完美无缺.要访问数组,我们只需使用matrix [i] [j],但是有没有什么方法可以通过使用*符号而不是[]来取消引用这个2D数组用于输入以及其他方法

第一个问题解决了我可以使用*(*(矩阵i)j)

现在我又得到了另一个问题,最后的代码段是释放分配的内存(我也是从互联网上获得的),但我不明白,为什么我只能使用delete []矩阵?

int **matrix;

// dynamically allocate an array
matrix = new int *[row]; 
for (int count = 0; count < row; count++)
{
    matrix[count] = new int[col];
}

// input element for matrix
cout << endl << "Now enter the element for the matrix..."; 
for (int i=0; i < row; i++) 
{
    for (int j=0; j < col; j++)
    {
        cout << endl << "Row " << (i+1) << " Col " << (j+1) << " :";
        cin >> matrix[i][j]; // is there any equivalent declaration here?
    }
}

// free dynamically allocated memory
for( int i = 0 ; i < *row ; i++ )
{
    delete [] matrix[i] ;   
}
delete [] matrix ;

解决方法

由于[b]只是*(a b),你当然可以这样做:
*(*(matrix + i) + j)

无论如何,这些新的分配容易出错.如果其中一个嵌套的新闻抛出,那么你就会有泄漏.尝试使用std :: vector代替.

原文链接:https://www.f2er.com/c/110856.html

猜你在找的C&C++相关文章