1
我实现与油嘴绑定一个DBUS对象,并因与返回GArrays问题:DBUS服务器崩溃
gboolean TestObject_get_data(TestObject* obj, GArray* buffer, GError** error)
{
int i;
printf("%s Entering\n", __PRETTY_FUNCTION__);
buffer = g_array_new(FALSE, FALSE, sizeof(char));
if(buffer)
{
for(i = 0; i < 5 ; i++)
{
g_array_append_val(buffer, i);
}
return TRUE;
}
/* TODO: Error handling */
return FALSE;
}
当我调用对象的方法与测试客户端,我得到一个分段错误:
[email protected]$ ./testObject
TestObject_get_data Entering
** ERROR **: out of memory
aborting...
Aborted (core dumped)
函数返回后,程序崩溃。这是我第一次使用Glib,所以可能有一些显而易见的缺失。我一直在阅读this tutorial,并且大部分例子都可以使用。不幸的是,它没有将数组返回给客户端的例子。
看起来像@Mike是正确的。您创建一个新的内存区域并获取地址。你需要以某种方式将该地址传回给被调用者。答案是一个指向指针的指针。 – Earlz