【发布时间】:2016-02-23 12:07:48
【问题描述】:
我有一个在运行时使用 g_array_append_val 分配的 GValue(全非零)的 GArray。我想知道如何找出最后一个元素的索引,或者更准确地说,数组包含多少个元素。类似的代码
for (length=0;g_value_get_int(&g_array_index(array, GValue, length)); length++);
return length
会因越界而失败。
【问题讨论】:
-
由您来跟踪已添加到 garray 的元素数量。创建时,garray 分配的内存块足以容纳大量元素而无需重新分配,并且引用计数为
1。 (这样做是为了防止频繁重新分配)我不知道有什么方法可以在不查看 glib 源代码的情况下准确地知道在重新分配之前可以添加多少元素。见glib - Arrays -
@DavidC.Rankin 似乎不太可能。如果 GArrays 不跟踪它们的大小,
g_array_append_val将如何工作? -
点得很好,这就是为什么我将 OP 提到源代码,因为它没有记录在 glib - Arrays 文档中。