ciao a tutti
ho dei problemi con l'allocazione di risorse.
ecco il codice.
molte cose non hanno senso nč utilitą, poichč č soltanto un esecizio.
l'ultima istruzione, la printf, mi stampa una stringa di 4 caratteri, e anche il campo size contiene 4. Dunque immagino che sto allocando spazio sufficiente per un semplice puntatore e non per i dati.
codice:typedef struct { void *campo; size_t size; } mystruct;inoltre mi chiedevo se come principio č giusto quello di allocare dinamicamente la variabile buffer, poichč questo pezzo di codice dovrei usarlo spesso. Un alternativa sarebbe sovrascrivere di continuo il buffer, stavolta allocato staticamente. Quale delle 2 č meglio secondo voi?codice:// crea una nuova struttura mystruct nuova; // crea un buffer di dimensioni stabilite (dovrei controllare il risultato di malloc..) void *buffer = malloc(500*sizeof(char)); // copia i dati nel buffer (non ha senso ma č solo una prova, verrą sostituita da una funzione di lettura su stdin) strncpy(buffer, "prova prova prova prova", sizeof(&buffer)); // alloca per il puntatore void di mystruct abbastanza spazio (che ora č noto) per contenere i dati del buffer nuova.campo = malloc(strlen(buffer)); if(nuova.campo == NULL) return -1; // copia quindi i dati dal buffer al puntatore strncpy(nuova.campo, buffer, strlen(buffer)); // copia la dimensione del messaggio nel campo apposito nuova.size = strlen(buffer); //qua dovrei rilasciare la memoria di buffer // verifica printf("%s %d", (char*)nuova.buf, nuova.size);
mi scuso per l'evidente ignoranza in materia

Rispondi quotando