我有一个应用程序,我在其中使用 UDisk 来处理一些驱动器和分区。在我的应用程序中,我有一个指向 a 的指针UDisksDrive
,我需要将其转换为UDisksObject
以后可以访问其他接口的指针。我不清楚我应该取消引用哪些对象以及何时取消引用。在一个功能中,我目前正在执行以下操作:
UDisksDrive* drive = udisks_client_get_drive_for_block(client, block);
if(drive == NULL) {
g_object_unref(block);
return NULL;
}
UDisksObject* driveObject = (UDisksObject*) g_dbus_interface_get_object(G_DBUS_INTERFACE(drive));
g_object_unref(drive);
return driveObject;
但我不知道这是否正确。它有效,但我知道这可能并不一定意味着什么。gdbus 文档的g_dbus_interface_get_object()
读取就像我不应该driveObject
在接收函数完成时取消引用返回的变量,但我不确定。我觉得我应该block
在函数返回之前取消引用,但我不知道为什么我不这样做。这是一个我只有时间在这里和那里工作的项目,我觉得也许我已经尝试过了,但它导致了崩溃或异常。
我的大部分其他涉及 UDisk 的代码都非常简单。我_get_
的东西,使用它,并取消引用它。正是这些涉及界面交换的东西,我有点模糊。