int Matrix mit Zeigern in C - Speicherzuordnungsverwirrung

Ich habe einige Probleme beim Erstellen einer int-Matrix, ohne dass Speicherlecks auftreten. Ich möchte in der Lage sein, eine gegebene (globale) Matrix dynamisch über read_matrix () in eine beliebige Größe zu bringen. Aber dann möchte ich in der Lage sein, den Speicher später freizugeben. In meiner Hauptmethode sollte der zweite printf zu einem Busfehler führen, da ihm kein Speicher zugewiesen werden sollte. Wie würde ich vorgehen, um dies zu schaffen?

<code>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]);
}
</code>

Antworten auf die Frage(7)

Ihre Antwort auf die Frage