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