双指针和指针的释放问题

时间:2016-06-11 10:41:40

标签: c

大家好,我的代码中有一些问题:

这是一个矩阵分配函数:

matrix_type** matrix_allocation(MATRIX* matrix, int* rows_size, int* cols_size)
//this function allocates dynamically a matrix and verify its allocation
{
    int i;
    matrix->n_rows=0;
    matrix->n_cols=0;
    matrix->pp_matrix=(matrix_type**)calloc(*rows_size,sizeof(matrix_type*));
    i=0;
    while(i<*rows_size)
    {
        matrix->pp_matrix[i]=calloc(*cols_size,sizeof(matrix_type));
        i++;
    }
    matrix->n_rows=*rows_size;
    matrix->n_cols=*cols_size;
    return matrix->pp_matrix;
}

这是我的释放功能:

void matrix_deallocation(MATRIX* matrix)
//this function deallocates a matrix
{
    int i;
    i=0;
    while(i<matrix->n_cols)
    {
        free(matrix->pp_matrix[i]);
        i++;
    }
    free(matrix->pp_matrix);
}

MATRIX结构

typedef int matrix_type;
typedef struct{
    int n_rows;
    int n_cols;
    matrix_type** pp_matrix;
}MATRIX;

我如何在main中调用deallocation函数:

matrix_deallocation(&table);

这个函数只释放半个矩阵,为什么?

Screen

1 个答案:

答案 0 :(得分:2)

看来你的意思是以下

imageView