错误:g_ptr_array_add:断言' rarray'在c上失败,使用g_ptr_array

时间:2017-04-29 23:40:13

标签: c glib

我试图将自定义结构添加到定义为

的g_ptr_array中
union response {
    int address; 
    entry_p ent;
};

typedef struct quad_{
    char * operation;
    union response resp;
    entry_p arg1;
    entry_p arg2; 
}quad;

问题在于使用功能

g_ptr_array_add(gaQuadList,(gpointer)s_quad);

我收到以下警告:

  

GLib-CRITICAL **:g_ptr_array_add:断言' rarray'失败

因此在使用时

    s_quad = (singleQuad)g_ptr_array_index(gaQuadList,0);

导致分段错误

我的问题是结构没有插在g_ptr_array上,或者我没有正确插入数组上的结构

我检查的内容是我可以单独打印四边形,这里的最终目标是我可以使用foreach函数打印数组的每个元素

1 个答案:

答案 0 :(得分:0)

断言失败是您需要查看以诊断此问题的方法。

  

GLib-CRITICAL **:g_ptr_array_add:断言'rarray'失败

查看the code for g_ptr_array_add()表明此断言失败意味着gaQuadListNULL。即,您尚未首先分配GPtrArray实例,或者以某种方式用NULL覆盖了该实例。

您是否事先在任何地方调用g_ptr_array_new_with_free_func()来分配数组?