Ciao ragazzi, in primis mi scuso gia' se non saro' chiaro.
Mi e' venuto il classico dubbio della domenica.
Allora comincio con il definire una struttura di questo tipo:
codice:
struct object {
char name[18];
char second[40];
unsigned short address;
unsigned short nfeat;
unsigned short present;
unsigned short width;
unsigned short height;
unsigned short power;
struct feature * features;
};
adesso creo due puntatori
codice:
struct object * objs_tmp;
struct object * objs;
Il primo verra' allocato in questo modo:
codice:
objs_tmp= calloc(sizeof(struct object), 2);
quando avro' reperito il valore di nfeat della struttura potro' inizializzare:
codice:
objs_tmp[1].features = calloc(sizeof(struct feature), objs_tmp[1].nfeat);
La dimensione massima di questo array sara' sempre la stessa ed e' data da nfeat.
Cambiera' il numero di valori contenuti, cioe' inizialmente conterra' 20 valori poi 30 e cosi via.
objs_tmp e' di supporto a objs, ossia quando finisco il suo "utilizzo" lo copio in objs.
E qui mi sorge il dubbio.
Per copiarlo utilizzo la funzione memcpy
codice:
memcpy(objs, objs_tmp, sizeof(struct object) * 2);
In questo modo la funzione copiera' il numero giusto di byte??
Penso di si perche' avendo una volta definito la grandezza dell'array features la memoria nel heap dovrebbe essere alloccato e fine, quindi poi quando la si copia non ci dovrebbero sorprese indesiderate, ma non sono sicuro al 100% .
ciao e grazie