私は口が達者バインディングと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