问题描述
遇到以下示例时,我正在解决一些简单的指针练习:
I was solving some simple pointer exercises when i came across the following example:
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;
The array is defined in main as int** array1;
这是释放2d数组的内存的正确方法还是应该在函数中传递int ***数组?有没有办法检查内存是否已成功释放?
Is this a correct way of deallocating memory of a 2d array or should an int*** array be passed in the function instead?Is there a way to check that memory has been successfully deallocated?
推荐答案
是的,这是正确的. int***
仅在您打算更改指针的值时才需要,而不必更改.
Yes, that's correct. int***
is only necessary if you intend to change the value of the pointer, which you don't need to.
确实存在可以检查您的内存分配/释放的工具-Valgrind应该能够做到.
There do exist tools which can check your memory allocations/frees - Valgrind should be able to do it.
这篇关于C中的免费2D数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!