struct MyClass_1 er en type, MyClass_1 er en variabel, MyClass_1.foo initieres til 12. struct MyClass_2 er en type, MyClass_2 er en variabel, MyClass_2.foo initieres til 24. MyClass_2.MyClass_1_parent initieres ikke.
struct MyClass_2 * localName = malloc(sizeof(struct MyClass_2)); Betyder at localName der er af typen "struct MyClass_2", sættes til at pege på et object der bliver allokeres med malloc()
localName =& MyClass_2; Betyder at localName sættes til pege på variablen MyClass_2, derved mistes pointeren til det objekt der blev allokeret ovenfor.
free(localName); Her forsøger du at free() variablen MyClass_2, hvilken ikke kan lade sig gøre, da den ikke er allokeret med malloc/calloc, men er et statisk objekt.
Nemezis: bertelbrander har på glimrende vis forklaret hvori problemet består. Hvis du ønsker eksplicit allokering med initialisering vil jeg foreslå dig at skrive constructore til structs'ene og benytte new - eller skal du bruge C (uden ++)?. Dit eksempel kunne tilrettes som følger:
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.