如何释放以这种方式初始化的 C 中的 malloc 二维数组?

How to free a malloc 2D array in C initialiszed in this way?

我在 C:

中声明了一个像这样的 2D malloc 数组
    int** pArray;
    int i;

    pArray=(int**)malloc(pRows*sizeof(int*));
       for(i=0;i<pRows;i++)
         (int*)malloc(pColumns*sizeof(int*));

如何释放这个数组?我在网上看到 free() 的数量应该与使用的 malloc() 的数量相同。在这种情况下我可以免费两次什么?

对于初学者来说,分配不正确。这个说法

(int*)malloc(pColumns*sizeof(int*));

产生内存泄漏。

你的意思好像是下面的代码

int** pArray;
int i;

pArray = (int**)malloc( pRows * sizeof( int* ) );
for( i = 0; i < pRows; i++ )
{
     pArray[i] = (int*)malloc( pColumns * sizeof( int ) );
}

注意在循环中的语句中使用了表达式sizeof( int )而不是sizeof( int * )

您需要以相反的顺序释放分配的内存

for( i = 0; i < pRows; i++ )
{
     free( pArray[i] );
}
free( pArray );