В C у меня есть следующая функция для создания 2D-массива.Освобождение 2D-массива указателей от функции в C
int** createMatrix(int xdim, int ydim){
int** mat = malloc(xdim*sizeof(int*));
int i;
for(i=0; i<xdim; i++){
mat[i] = malloc(ydim*sizeof(int));
}
return mat;
}
В функции вызывающего абонента (интермедиат основной() в данном случае):
int **matA = createMatrix(10, 10);
free(matA);
я, кажется, есть проблема с освобождения памяти, и мне интересно, если это происходит потому, что переменная «мат» никогда не освобождается.
Достаточно ли свободного (matA), как я это сделал? Или проблема, которую я не могу освободить (мат)?
как '' mat' и matA' являются указателями на том же месте, поэтому, когда вы 'свободный (Mata)' как, если бы вы гипотетически 'свободный (мат) '(кроме того, что' mat' не находится в области видимости, поэтому вы не можете его освободить). Проблема, о которой говорится в ответах, заключается в том, что вы слишком свободны для всей выделенной памяти (на которую указывает каждый указатель в 'matA') – bolov