Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory leaks 后缀索引递增的gstreamer元素是否意味着可能存在内存泄漏?_Memory Leaks_Element_Gstreamer_Playbin2 - Fatal编程技术网

Memory leaks 后缀索引递增的gstreamer元素是否意味着可能存在内存泄漏?

Memory leaks 后缀索引递增的gstreamer元素是否意味着可能存在内存泄漏?,memory-leaks,element,gstreamer,playbin2,Memory Leaks,Element,Gstreamer,Playbin2,我基于gstreamer-1.0编写了一个简单的代码,使用playbin对循环的某个文件进行解码,每次playbin创建元素mpeg2dec元素时,该元素都有一个新名称。第一次使用的名称可以是mepg2dec0,然后当再次播放文件时,它会将后缀索引增加到mpeg2dec1、mpeg2dec2,等等 以下是一些代码引用: do { playbin=gst_element_factory_make("playbin", "play"); g_object_set(G_OBJECT(p

我基于gstreamer-1.0编写了一个简单的代码,使用playbin对循环的某个文件进行解码,每次playbin创建元素mpeg2dec元素时,该元素都有一个新名称。第一次使用的名称可以是mepg2dec0,然后当再次播放文件时,它会将后缀索引增加到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);

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

后缀的递增主要意味着有东西跟踪当前后缀

gstreamer可以分配所有元素并维护它们的列表。 添加新元素时,gstreamer可以检查当前分配的元素名称,并基于此知识生成一个新的元素名称,例如,首先尝试将mepg2dec0作为名称,如果已经使用,则尝试mepg2dec1等,直到找到可用名称

然而,这也可以是每个elementtype的一个整数,即在创建新元素时单调增加无索引重用,而完全忽略是否以及哪些元素被销毁

所以要回答你的问题:


不,每个元素都有一个新名称并不表示是否存在内存泄漏。

我希望没有内存泄漏,但是,某些元素的名称保持不变: