stavo lottando per fissare un codice di oggi, allora mi imbatto in qualcosa di simile a:allocare memoria per una struttura con un puntatore personaggio in C
typedef struct {
int a;
int b;
int c;
int d;
char* word;
} mystruct;
int main(int argc, char **argv){
mystruct* structptr = malloc(sizeof(mystruct));
if (structptr==NULL) {
printf("ERROR!")
...
}
...
free(structptr);
return 0;
}
il codice è stato dando un sacco di errori di memoria a causa del fatto , che char* word
è una stringa di lunghezza variabile e malloc non stava allocando abbastanza memoria per esso. In effetti, era solo l'assegnazione di 20 Bytes
per l'intero struct
. C'è un modo per aggirare questo problema, senza trasformare lo char*
in sth come char word[50]
?
visto che hai avuto un commento, ma poi rimosso. Modifica la tua domanda con maggiori informazioni o invia una seconda domanda. Esistono metodi per far fronte a un vettore 'char' che cambia in lunghezza. – JackCColeman
Ho aggiunto il commento e ho trovato la risposta nei commenti seguenti. Credo che una dimensione fissa del buffer sia in realtà la soluzione migliore poiché la parola rappresenterà un nome e i nomi non dovrebbero essere lunghi quanto un romanzo;). Grazie per l'aiuto.Ero solo curioso di allocare memoria per stringhe variabili, ecco perché l'ho chiesto. Ma stavo per passare ad array di lunghezza fissa comunque. –
in questi giorni lo spazio (ad es. La RAM) è abbondante, quindi nella maggior parte dei casi la definizione di una matrice di caratteri di dimensioni pari a 1024 non causerà alcun problema. I buffer I/O sono di routine molto più grandi di questo. – JackCColeman