2015-11-20 17 views
6

G_array_append_val ile çalışma zamanında ayrılan bir GArray of GValue (tümü sıfır olmayan) var. Son elemanın endeksinin ne olduğunu nasıl bulabilirim, ya da daha doğrusu dizi kaç elemanın tuttuğunu öğrenebilirim.Belirli bir GArray'in uzunluğunu nasıl bulabilirim?

, sınırların dışında bir şekilde başarısız olur.

+1

Süzgeçlere eklediğiniz öğelerin sayısını takip etmek size kalmıştır. Oluşturulduğunda, bir garray, yeniden tahsis edilmeksizin önemli sayıda elemanı tutmak için yeterli bir bellek bloğu tahsis eder ve bir '1' refcount'ına sahiptir. (Bu özellikle sık yeniden tahsisi önlemek için yapılır) Glib kaynağına bakmadan reallocation önce kaç eleman eklenebilir tam olarak söylemek için herhangi bir yol bilmiyorum. Bkz. [** glib - Arrays **] (https://developer.gnome.org/glib/stable/glib-Arrays.html) –

+1

@ DavidC.Rankin Pek olası görünmüyor. GArrays, boyutlarını takip etmiyorsa g_array_append_val işlevi nasıl çalışır? – immibis

+0

İyi bir şekilde alınmış, bu yüzden OP'yi kaynağa yönlendirdim, çünkü glib - Arrays belgelerinde belgelenmemiş. –

cevap

12

İyi belgelenmiş gibi görünmüyor, ancak dizideki öğelerin sayısı array->len alanında depolanıyor.

+0

Teşekkürler! Ohh adamım en azından kaynak dosyaya bakmalıydım! _GArray ilk yapısında, kaynak dosyasındaki doxygen, /** * GArray: * veri: eleman verisine bir işaretçi diyor. Veriler #GArray öğesine * öğeleri eklendikçe taşınabilir. * len: #GArray öğesindeki * dahil olmak üzere öğelerin sayısı sıfır sonlandırma elemanı. * * GArray'ın ortak alanlarını içerir. */ –

+2

Gelecekte başvurmak için, [burada] belgelenmiştir (https://developer.gnome.org/glib/stable/glib-Arrays.html#GArray). – ptomato

İlgili konular