Десятичного матрицы с указателями в C - путаницы выделения памяти

у меня возникли некоторые проблемы с производством int матрицы без создания утечек памяти. Я хочу иметь возможность сделать определенный (глобальной) матрицы в любой размер динамически через read_matrix(). Но тогда я хочу быть в состоянии, чтобы освободить память позже. Так в моей основной метод второй printf должен привести в автобус ошибке, так как она не должна иметь никакого памяти, выделенной для него. Как бы я идти о создании этого?

int**   	first_matrix;
int**   	second_matrix;
int**   	result_matrix;

int** read_matrix(int size_x, int size_y)
{
    int** matrix;
    matrix = calloc(size_x, sizeof(int*));
    for(int i = 0;i<size_x;i++) {
    	matrix[i] = calloc(size_y, sizeof(int));
    }
    for(int i = 0;i<size_x;i++) {
    	for(int j = 0;j<size_y;j++) {
    		matrix[i][j] = i*10+j;
    	}
    }
    return matrix;
}

int main(int stackc, char** stack)
{
    first_matrix = read_matrix(10,10);
    printf("9:3 %d - 4:6 %d n", first_matrix[9][3], first_matrix[4][6]);
    free(*first_matrix);
    free(first_matrix);
    printf("9:3 %d - 4:6 %d n", first_matrix[9][3], first_matrix[4][6]);
}

Найдено 7 ответов:

int matrix with pointers in C - memory allocation confusion

http://stackoverflow.com/questions/105653/int-matrix-with-pointers-in-c-memory-allocation-confusion

Посмотреть решение →