Ho un GArray di GValue (tutti diversi da zero) che è stato assegnato in fase di esecuzione con g_array_append_val. Mi chiedo come posso scoprire qual è l'indice dell'ultimo elemento, o più precisamente quanti elementi possiede l'array. Codice comeCome posso trovare la lunghezza di un determinato GArray?
for (length=0;g_value_get_int(&g_array_index(array, GValue, length)); length++);
return length
fallirebbe con un fuori limite.
Spetta a te tenere traccia del numero di elementi che hai aggiunto al garray. Quando viene creato, un garray alloca un blocco di memoria sufficiente a contenere un numero significativo di elementi senza riallocazione e ha un conteggio di '1'. (questo è fatto specificamente per prevenire la riallocazione frequente) Non so in alcun modo per dire esattamente quanti elementi possono essere aggiunti prima di riallocazione senza guardare la fonte glib. Vedi [** glib - Arrays **] (https://developer.gnome.org/glib/stable/glib-Arrays.html) –
@ DavidC.Rankin Sembra improbabile. Come funzionerebbe 'g_array_append_val' se GArrays non tiene traccia delle loro dimensioni? – immibis
Punto ben preso, ecco perché ho indirizzato l'OP al sorgente, perché non era documentato nella documentazione di glib - Arrays. –