Mam GArray wartości GValue (wszystkie niezerowe), które zostały przydzielone w środowisku wykonawczym z g_array_append_val. Zastanawiam się, jak mogę się dowiedzieć, jaki jest indeks ostatniego elementu, a dokładniej, ile elementów ma ta tablica. Kod taki jakJak mogę znaleźć długość danej GArray?
for (length=0;g_value_get_int(&g_array_index(array, GValue, length)); length++);
return length
może zawieść z poza granicami.
To od Ciebie zależy śledzenie liczby elementów dodanych do garażu. Po utworzeniu garawka przydziela blok pamięci wystarczający do przechowywania znacznej liczby elementów bez realokacji i ma wartość "1". (robi się to specjalnie w celu uniknięcia częstej realokacji) Nie wiem w żaden sposób, aby dokładnie powiedzieć, ile elementów można dodać przed ponownym przydzieleniem bez patrzenia na źródło glib. Zobacz [** glib - Array **] (https://developer.gnome.org/glib/stable/glib-Arrays.html) –
@ DavidC.Rankin Wydaje się nieprawdopodobne. Jak działa 'g_array_append_val', jeśli GArrays nie śledzi ich rozmiaru? – immibis
Dobrze wskazany punkt, dlatego odesłałem OP do źródła, ponieważ nie zostało to udokumentowane w dokumentacji glib - Arrays. –