[英]freeing memory in C doesn't work
我尝试释放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 PROGRAM CRASHES HERE
free(bluematrix);
free(greenmatrix);
free(weigthMatrix);
free_image(©Image);
当我尝试释放阵列的顶层时,我的程序崩溃。 我不知道我在做什么错。 我想我分配的一切正确吗?
您为radius*2+1
元素保留空间
redmatrix = (int**) calloc(radius*2+1,sizeof(int*));
但是,然后用radius*2+2
元素填充和释放数组
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]);
...
改成
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]);
...
而且请不要转换malloc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.