hallo,
wollt eine liste machen, die verschiedene structs zulaesst. hab das dann mit union so gemacht:
typedef union dataelement {
struct literalnode* literalNode;
struct clausenode* clauseNode;
struct graphnode* graphNode;
struct variablenode* varNode;
} Data;
typedef struct list {
union dataelement* data;
struct list* next;
struct list* previous;
} List;
List* addListElement(List* list, Data* element) {
List* newList = (List *) calloc(1, sizeof (List));
newList->data = element;
if (list == NULL) {
list = newList;
} else {
list->previous = newList;
newList->next = list;
list = newList;
}
return list;
}
Alles anzeigen
da die structs der union alle den selben speicher benuetzen, hab ich mire gedacht, ich kann einfach:
das funktioniert so nun aber leider nicht, dataelement bekommt zwar den pointer, aber nicht die 4 elemente der union.
Nun hab ich mir ueberlegt einfach:
da krieg ich aber leider segmentation fault, ganz wo anders (char array das fuers parsen genutz wird). Hab aber ausserdem nichts geaendert, und das hat zuerst funktioniert.
kann es sein dass ich fuer data auch ein malloc machen muss?
hab das hinzugefuegt und dann gehts, aber irgendwie kommt mir das wie speicherverschwendung vor. und der ist leider eher knapp.
gibts irgendeine moeglichkeit wie ich das sonst einfacher machen/haben kann (liste mit unterschiedlichen objecten)?
bin fuer alle tipps dankbar!