Below, i have shown the code to calculate the determinant value of a matrix.mat is the pointer to the single dimensional array everywhere and dimension is the dimension of a matrix. if 3x3 then dimension=3.

The code shows no compilation errors. But when it is run, i get an error saying some block of memory ( i dun remember which block) cannot be written.

what could possibly be the problem?

Code:#include <stdio.h> #include <stdlib.h> #include <math.h> int det_recursive(int* mat,int dimension){ short int iter; int * temp_mat; int det_mat=0; for (iter=0;iter<dimension;iter++){ temp_mat=(int *) malloc(pow(dimension-1,2)*sizeof(int)); form_new_mat(mat,iter,temp_mat,dimension); det_mat=det_mat+((*(mat+iter))*det_recursive(temp_mat,dimension-1)*pow(-1,iter)); } free(temp_mat+iter); return det_mat; } int form_new_mat(int * mat,int iter,int * temp_mat,int dimension){ int temp_iter=dimension; int new_iter=0; while(temp_iter<pow(dimension,2)){ if (iter== temp_iter % dimension) temp_iter++; else{ *(temp_mat+new_iter)=*(mat+temp_iter); new_iter++; } } return 0; } int main(){ int dimension=3; int mat[9]={1,0,0,0,1,0,0,0,1},i,j; for (i=0;i<0;i++) printf("\nhello world"); //printf("%d",det_recursive(mat,dimension)); system("pause"); return 0; }