c中的免费2d数组

时间:2012-04-26 20:23:08

标签: c memory-management multidimensional-array

当我遇到以下示例时,我正在解决一些简单的指针练习:

void deallocate2D(int** array, int nrows) {     
 /*  deallocate each row  */
 int i;
 for(i = 0; i < nrows; i++) {
      free(array[i]);
 }

 /*  deallocate array of pointers  */
 free(array);     
}

数组在main中定义为int ** array1;

这是解除2d数组内存的正确方法吗?还是应该在函数中传递int ***数组? 有没有办法检查内存是否已成功解除分配?

1 个答案:

答案 0 :(得分:2)

是的,这是正确的。只有当你打算改变你不需要的指针值时才需要int***

确实存在可以检查你的内存分配/释放的工具--Valgrind应该能够做到。