Ich versuche, ein Array einer Struktur zu erstellen, aber ich weiß es nicht Größe am Anfang.Verwenden Sie malloc für Doppelzeiger in C90
struct MyStruct** thing;
size_t thing_len = 0;
thing = (struct MyStruct**) malloc(thing_len * sizeof(struct MyStruct*));
//...
thing_len += 1
thing = (struct MyStruct**) realloc(thing_len * sizeof(struct MyStruct*));
Wenn ich das tun thing
den Typ 0x0
MyStruct*
statt MyStruct**
und enthält bekommt. Aber wenn ich mache
struct MyStruct* thing;
size_t thing_len = 0;
thing = malloc(thing_len * sizeof(struct MyStruct));
//...
thing_len += 1
thing = realloc(thing_len * sizeof(struct MyStruct));
Es funktioniert !!
Ich weiß nicht, ob es etwas ändert, aber ich verwende -ansi
und -pedantic
Optionen.
Bitte geben Sie eine [MCVE]. – Mat
[Bitte lesen Sie in dieser Diskussion, warum nicht den Rückgabewert von malloc() und Familie in C ..] werfen (https://stackoverflow.com/q/605845/2173917) –
Es ist immer eine gute Idee, die zu lesen Dokumentation zu den verwendeten Funktionen. – alk