Friday 15 July 2011

freeing memory in C doesn't work -



freeing memory in C doesn't work -

i have problem when seek free allocated memory in c.

int i,j,**redmatrix, **bluematrix, **greenmatrix; double **weigthmatrix,fsom; weigthmatrix = (double**) calloc(radius*2+1,sizeof(double*)); redmatrix = (int**) calloc(radius*2+1,sizeof(int*)); bluematrix = (int**) calloc(radius*2+1,sizeof(int*)); greenmatrix = (int**) calloc(radius*2+1,sizeof(int*)); if(weigthmatrix==null || redmatrix==null || bluematrix==null || greenmatrix==null){ printf("%s\n", "error: probleem met geheugenallocatie"); exit(1); } for(i=0;i<radius*2+2;i++){ weigthmatrix[i] = (double*) calloc(radius*2+1,sizeof(double)); redmatrix[i] = (int*) calloc(radius*2+1,sizeof(int)); bluematrix[i] = (int*) calloc(radius*2+1,sizeof(int)); greenmatrix[i] = (int*) calloc(radius*2+1,sizeof(int)); if(weigthmatrix[i]==null || redmatrix[i]==null || bluematrix[i]==null || greenmatrix[i]==null){ printf("%s\n", "error: probleem met geheugenallocatie"); exit(1); } } for(i=0;i<radius*2+1;i++){ free(weigthmatrix[i]); free(redmatrix[i]); free(bluematrix[i]); free(greenmatrix[i]); } free(redmatrix); //my programme crashes here free(bluematrix); free(greenmatrix); free(weigthmatrix); free_image(&copyimage);

my programme crashes when seek free top level of array. don't know doing wrong. think allocated right?

you reserve space radius*2+1 elements

redmatrix = (int**) calloc(radius*2+1,sizeof(int*));

but fill , free arrays radius*2+2 elements

for(i=0;i<radius*2+2;i++){ redmatrix[i] = (int*) calloc(radius*2+1,sizeof(int)); for(i=0;i<radius*2+2;i++){ free(redmatrix[i]); ...

change to

for(i=0;i<radius*2+1;i++){ redmatrix[i] = (int*) calloc(radius*2+1,sizeof(int)); ... for(i=0;i<radius*2+1;i++){ free(redmatrix[i]); ...

and please, don't cast malloc

c memory malloc calloc

No comments:

Post a Comment