繁体   English   中英

释放C中的内存不起作用

[英]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(&copyImage);

当我尝试释放阵列的顶层时,我的程序崩溃。 我不知道我在做什么错。 我想我分配的一切正确吗?

您为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM