私は、実行時にg_array_append_valで割り当てられたGValue(すべてゼロでない)のGArrayを持っています。どの要素が最後の要素のインデックスであるか、より正確には何個の要素が配列を保持しているかを調べるにはどうすればよいでしょうか。特定のGArrayの長さはどのようにして調べることができますか?
for (length=0;g_value_get_int(&g_array_index(array, GValue, length)); length++);
return length
のようなコードは、範囲外で失敗します。
garrayに追加した要素の数を追跡するのはあなた次第です。作成されると、garrayは、再割り当てなしでかなりの数の要素を保持するのに十分なメモリブロックを割り当て、refcountが '1'です。 (これは頻繁な再割り当てを防ぐために具体的に行われています)glibソースを調べなくても、再割り当て前に追加できる要素の数を正確に伝える方法はわかりません。 [** glib - Arrays **](https://developer.gnome.org/glib/stable/glib-Arrays.html)を参照してください。 –
@ DavidC.Rankinそう思わないでしょう。 GArrayがサイズを追跡しない場合、 'g_array_append_val'はどのように動作しますか? – immibis
ポイントがうまく取られたので、私はOPをソースに参照しました。なぜなら、glib-Arraysのドキュメントには記載されていないからです。 –