Ich brauche Hilfe, um Speicher für eine Struktur freizugeben.C - Wie man free() verwendet, um eine Struktur im Speicher freizugeben?
Ich speichere einen Zeiger auf einen Speicherort in einer Variablen, aber ich möchte den Speicher nach der Verwendung freigeben. Wenn ich jedoch versuche, den Speicher freizugeben, wird nur das erste Strukturelement freigegeben (name
) und age
bleibt im Speicher. Mein Code kann unten gesehen werden.
int main(int argc, char **argv)
{
struct employee {
char *name;
int age;
};
// Make pointer, employee struct and put struct in memory at pointer location
struct employee *employee_1;
struct employee new_employee;
new_employee.name = "Sue";
new_employee.age = 26;
employee_1 = (struct employee *) malloc(sizeof(new_employee));
(*employee_1).name = new_employee.name;
(*employee_1).age = new_employee.age;
// ... Some operations done
// Deallocate memory location
free(employee_1);
return 0;
}
Sowohl der Name und Alter des Arbeitnehmers sind auf jeden Fall an der Speicherstelle gespeichert werden, aber ich kann sie nicht freigeben beide. Ich habe das getestet, um mehr als zwei Elemente in der Struktur zu haben, und jedes Mal ist es nur das erste Element, das freigegeben wird.
Ich habe versucht, ein paar verschiedene Methoden wie jeder einzeln freigeben, falls das funktionieren würde free((*employee_1).name)
aber dies wirft einen Fehler. Jede Hilfe wäre willkommen.
Wie Sie herausfinden, dass 'age'„nicht freigegeben“? –
[Bitte lesen Sie diese Diskussion darüber, warum nicht der Rückgabewert von 'malloc()' und Familie in 'C' umgewandelt werden soll.] (Http://stackoverflow.com/q/605845/2173917). –