Ich habe ein GArray von GValue (alle nicht Null), die zur Laufzeit mit g_array_append_val zugewiesen wurde. Ich frage mich, wie ich herausfinden kann, was der Index des letzten Elements ist, oder genauer, wie viele Elemente das Array enthält. Code wieWie kann ich die Länge eines gegebenen GArrays finden?
for (length=0;g_value_get_int(&g_array_index(array, GValue, length)); length++);
return length
würde mit einem Out-of-Grenzen fehlschlagen.
Es liegt an Ihnen, die Anzahl der Elemente zu überwachen, die Sie dem Garray hinzugefügt haben. Wenn er angelegt wird, ordnet ein Garray einen Speicherblock zu, der ausreicht, um eine signifikante Anzahl von Elementen ohne Neuzuweisung aufzunehmen, und hat einen refcount von "1". (Dies geschieht speziell, um eine häufige Neuzuweisung zu verhindern.) Ich weiß nicht, wie ich genau sagen kann, wie viele Elemente vor der Neuzuordnung hinzugefügt werden können, ohne die glib-Quelle zu betrachten. Siehe [** glib - Arrays **] (https://developer.gnome.org/glib/stable/glib-Arrays.html) –
@ DavidC.Rankin Scheint unwahrscheinlich. Wie würde 'g_array_append_val' funktionieren, wenn GArrays ihre Größe nicht verfolgen? – immibis
Punkt gut gemacht, deshalb habe ich das OP an die Quelle verwiesen, weil es nicht in der glib - Array Dokumentation dokumentiert wurde. –