Hallo Liebe Mitwissende,
zur Zeit stehe ich auf dem Schlauch.
Ich habe eine verschachtelte Struktur…
struct PIC
{
struct DATA
{
int wert1;
} * data;
};
Im Hauptprogram lege ich sie an, mit:
struct PIC picture;
struct PIC * pic;
pic = &picture;
Später allokiere ich Speicher - dynamisch mit:
pic->data = (struct PIC:ATA *) calloc(anzahl, sizeof(PIC:ATA));
Wenn ich nun direkt dahinter mit:
free(pic->data) die innere Struktur freigeben möchte, dann funktioniert das.
Jedoch schreibe ich etwas in die Struktur bevor ich sie wieder lösche:
pic->data[2].wert1 = 2; /* data ist ein array von meiner struktur */
Wenn ich nun den Speicher freigeben möchte mit:
free(pic->data) --> dann gibt es einen Speicherzugriffsfehler
Wie ist die Erklärung zu free zu verstehen in dem steht, dass free den zuletzt von malloc oder calloc reservierten Speicher freigibt?
Oder wo ist hier Haken?
Danke und viele Grüße
Denis