Pessoal implementei uma rede neural utilizando funções matriciais, porém está ocorrendo vazamento de memporia e a execução dela para e o codeblocks trava. Não sei o que fazer, impelementei as funções matriciais utilizando alocação dinâmica, porém não sei como eu devo esvaziar a memória quando necessário. Alguém pode em ajudar. Eis ai um exemplo de uma implementação de multiplicação de matriez. Onde eu deveria usar a função free()?
typedef struct
{
int rows;
int cols;
double** point;
} Matrix;
Matrix* dot_point_matrix(Matrix* matrix_a, Matrix* matrix_b)
{
double** malloc_matrix(int line, int col);
int i, j;
double **matrix = malloc_matrix(matrix_a->rows, matrix_b->cols);
if((matrix_a->rows == matrix_b->rows) && (matrix_a->cols == matrix_b->cols))
{
for(i = 0; i < matrix_a->rows; i++)
{
for(j = 0; j < matrix_b->cols; j++)
{
matrix[i][j] = matrix_a->point[i][j] * matrix_b->point[i][j];
}
}
}
else
{
printf("As matrizes nao possuem numero de linhas e de colunas iguais\n");
}
Matrix *returned = (Matrix*)malloc(sizeof(Matrix));
returned->rows = matrix_a->rows;
returned->cols = matrix_b->cols;
returned->point = matrix;
return returned;
}
double** malloc_matrix(int line, int col)
{
double **matrix = (double**)malloc(line * sizeof(double));
int i;
for(i = 0; i < line; i++)
{
matrix[i] = malloc(col * sizeof(double));
}
return matrix;
}