大家好,我有我的代碼中的一些問題:雙指針的釋放和指針的問題
這是一個矩陣分配功能:
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;
如何我調用釋放函數主:
matrix_deallocation(&table);
此功能取消分配只有一半的矩陣,爲什麼呢?
你有沒有聽說過'for'循環 - 使代碼比使用'while'循環 –
@Simone TheAlmighty Cicerello你有沒有分配更具可讀性矩陣按行或按列? –