十四、GLib——GArray
-
GArray添加元素的时候,不是指针赋值存储,而是对要存储的元素的实际内存进行拷贝。(所以GArray一般存储的是某个对象,而不是某个对象的指针)
-
GArray并没有在GType类型系统注册。
1 相关函数总结
1.1 g_array_new
/**
* @zero_terminated: 如果数组在末尾应有一个额外的元素并设置为0,则为%TRUE
* @clear_: 如果在分配时应将#GArray元素自动清除为0,则为%TRUE
* @element_size: 每个元素的大小(以字节为单位)
*
* 创建一个新的具有引用计数1的#GArray。
*/
GArray*
g_array_new (gboolean zero_terminated,
gboolean clear,
guint elt_size);
1.2 g_array_append_vals
/**
* @data: 要存储元素的地址
* @len: 要存储多少个元素
*
* 实际执行的:memcpy(数组末尾地址, data, len * 元素的大小)
*/
GArray*
g_array_append_vals (GArray *farray,
gconstpointer data,
guint len)
2 分析为什么不能存储指针
3 GArray适用场合
-
创建一个GArray存储GstCapsArrayElement结构体
g_array_new (FALSE, TRUE, sizeof (GstCapsArrayElement));
-
把一个元素添加到
GArray
里面(注意:传入的不是指针)