我的gstreamer发生内存泄漏:
#include <iostream>
#include <string.h>
#include <glib.h>
#include <gst/gst.h>
using namespace std;
void info(const GstElement *const element)
{
cout << "count: " << GST_OBJECT_REFCOUNT(element) << endl;
cout << "disposing: " << GST_OBJECT_IS_DISPOSING(element) << endl;
}
int main()
{
gst_init(NULL,NULL);
GstElement *element = gst_pipeline_new("src");
info(element);
gst_object_unref(element);
info(element);
gst_deinit();
return 0;
}
当我用valgrind控制代码时,得到以下结果:
== 9098 ==命令:./test_gstreamer
== 9098 ==
数:1
处置:0
数:0
处置:0
== 9098 ==
== 9098 ==堆摘要:
== 9098 ==在导出处使用:2,199个块中的1,364,118字节
== 9098 ==堆总使用量:21,877个分配,19,678个空闲,3,899,417个字节分配
== 9098 ==
== 9098 ==泄漏摘要:
== 9098 ==绝对丢失:1块中60字节
== 9098 ==间接丢失:10个块中的240个字节
== 9098 ==可能丢失:880个块中的543,952字节
== 9098 ==仍可到达:1,308个块中的819,866字节
== 9098 ==已抑制:0字节,0块
== 9098 ==使用--leak-check = full重新运行以查看内存泄漏的详细信息
== 9098 ==
== 9098 ==有关检测到的和抑制的错误的计数,请重新运行:-v
== 9098 ==错误摘要:0个上下文中有0个错误(抑制:2个中有2个)
为什么
gst_object_unref
不释放所有内存?为什么
GST_OBJECT_IS_DISPOSING
在gst_object_unref
之后返回false? 最佳答案
您可以尝试将主要内容更改为此吗:
gst_init(NULL,NULL);
GstElement *element = gst_pipeline_new("src");
info(element);
gst_element_set_state (element, GST_STATE_NULL);
gst_object_unref(element);
info(element);
return 0;
认为这可能有效。
关于c++ - gstreamer内存泄漏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10439407/