当我遇到以下示例时,我正在解决一些简单的指针练习:
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 ***数组? 有没有办法检查内存是否已成功解除分配?
答案 0 :(得分:2)
是的,这是正确的。只有当你打算改变你不需要的指针值时才需要int***
。
确实存在可以检查你的内存分配/释放的工具--Valgrind应该能够做到。