Salve ,
ho questa struttura:

codice:
struct stringpool {
                  int identifiers[100];
                  char strings[100][100];
                  int foundPos;
                  enum error {SUCCESS,KO_DUPLICATE_FOUND,KO_NULL_STRING,
                                   KO_FULL_POOL,ID_NOT_VALID,ID_NOT_FOUND,KO_DUPLICATE_FILE,
                                   KO_NO_DATA,KO_FILE_NOT_EXIST};  
                  }sp;
E dovrei calcolarne la dimensione in byte degli elementi effettivamente presenti all'interno della struttura poichè, in base al resto del codice, i vettori all'interno della struttura non vengono necessariamente riempiti tutti.
Quindi ho fatto così:

codice:
for (i = 0;
      i < dim_str;
      i++){
           if (sp.identifiers[i] != -1){
               l = l + 1;
           }
 }         
 size_ide = sizeof (int) * l;
 
 for (i = 0;
      i < dim_str;
      i++){
           for (j = 0;
               j < dim_str;
               j++){
                    if (sp.strings[i][j] != NULL){
                       n = n + 1; 
                    }                 
           }
 }   
 size_str = sizeof (char) * n;
Così ho la dimensione degli elementi in identifiers e strings, è corretto?

Poi visto che in sp ci sono anche altri elementi che dovrei conteggiare mi basterebbe sommare i seguenti:
codice:
sizeof(sp.foundPos)
sizeof(enum error)
a size_str e size_ide o non è corretto?

Mi è sorto il dubbio perchè la dimensione di foundPos mi risulta 4 e quella di enum error anche. Però in totale sp è 10404 con 10000 per i char e 400 per int, qunindi non mi trovo con i conti e credo che sbaglio qualcosa...

che ne dite?

Grazie a tutti in anticipo.