Ist es vorzuziehen, die 'inneren' Strukturen in einer geschachtelten Hierarchie dynamisch zuzuordnen? Wenn die Elternstruktur dynamisch zugewiesen wird, spielt das überhaupt eine Rolle? Warum/wie spielt es eine Rolle? Ich versuche nur, mein Verständnis von Implikationen verschiedener, scheinbar widersprüchlicher Wege zu entwickeln, mit denen das Gedächtnis in einer Code-Basis behandelt wird, mit der ich es zu tun habe.Bevorzugte Zuweisung von geschachtelten Strukturen
Zum Beispiel, was sind die Vorteile von:
struct Foo_type {
int i;
}; typedef struct Foo_type Foo;
struct Bar_type {
Foo f;
}; typedef struct Bar_type Bar;
int main() {
Bar* b = malloc(sizeof(Bar));
/* yada yada yada */
free(b);
return 0;
}
Im Gegensatz zu:
struct Foo_type {
int i;
}; typedef struct Foo_type Foo;
struct Bar_type {
Foo* f;
}; typedef struct Bar_type Bar;
int main() {
Bar* b = malloc(sizeof(Bar));
b->f = malloc(sizeof(Foo));
/* yada yada yada */
free(b->f);
free(b);
return 0;
}
Sind sie gleichwertig/anders?
(1) ist einfacher; (2) ist flexibler. Bevorzugen Sie (1), wenn Sie nicht wirklich (2) brauchen. – Matt
@Matt Ahh, das macht Sinn. So viel klarer nach der Tat :) Grundsätzlich, wenn Sie nicht wissen, die Größe von foo dann gehen Sie mit 2 ... ist das wirklich, im Prinzip, alles, was Sie gewinnen? –
Ja, du hast es richtig gemacht. – Matt