具有递增后缀索引的streamer元素是否意味着可能存在内存泄漏?



我基于gstreamer-1.0编写了一个简单的代码,使用playbin对某个文件进行循环解码,并且每次playbin创建元素mpeg2dec元素时,该元素都有一个新名称。第一次的名称可以是"mepeg2dec0",然后它将后缀索引增加到"mpeg2dec1","mpeg2dec2",以此类推,当文件再次播放时。

下面是一些代码引用:

do {
    playbin=gst_element_factory_make("playbin", "play");
    g_object_set(G_OBJECT(playbin), "uri", "file:///home/gst/Videos/1.ts", NULL);
    /* add message receivers ... */
    gst_element_set_state(GST_ELEMENT(playbin), GST_STATE_PAUSED);
    gst_element_set_state(GST_ELEMENT(playbin), GST_STATE_PLAY);
    /* wait until got EOS */
    gst_element_set_state(GST_ELEMENT(playbin), GST_STATE_PAUSED);
    gst_element_set_state(GST_ELEMENT(playbin), GST_STATE_NULL);
    gst_object_unref(GST_ELEMENT(playbin));
} while(1);

这个后缀索引增加是否意味着未释放的元素可能存在内存泄漏?

后缀的递增主要意味着一些跟踪当前后缀。

this something可以是,该streamer分配所有元素并维护它们的列表。当添加一个新元素时,gstreamer可以检查当前分配的元素名称,并根据这些信息生成一个新的元素名称(例如,先尝试"mepg2dec0"作为名称,如果已经有了,再尝试"mepg2dec1",以此类推,直到找到一个空闲名称)。

然而,这个东西也可以是一个单一的整数(每个元素类型),它是单调递增的(没有索引重用),无论何时创建一个新元素(完全忽略是否和哪些元素被销毁)。

所以回答你的问题:

no,为每个元素使用新名称并不能指示是否存在内存泄漏

相关内容

最新更新