Memory leaks Gstreamer元素内存泄漏

Memory leaks Gstreamer元素内存泄漏,memory-leaks,gstreamer,Memory Leaks,Gstreamer,如何在gstreamer元素/插件中发现内存泄漏问题?如何分析内存/对象泄漏/引用计数的gst引用计数?有什么例子吗? 我使用appsrc和appsink在gstreamer管道之间推拉缓冲区。这些元素似乎存在一些内存问题。我有一个向管道提供数据的live source,通常在live source的appsrc和appsink上设置哪些属性? 感谢opensid,您可以使用valgrind(memcheck)或asan(address sanitizer)等工具来检查此类问题。Refcount

如何在gstreamer元素/插件中发现内存泄漏问题?如何分析内存/对象泄漏/引用计数的gst引用计数?有什么例子吗? 我使用appsrc和appsink在gstreamer管道之间推拉缓冲区。这些元素似乎存在一些内存问题。我有一个向管道提供数据的live source,通常在live source的appsrc和appsink上设置哪些属性?
感谢opensid,您可以使用valgrind(memcheck)或asan(address sanitizer)等工具来检查此类问题。Refcount问题很难找到

如果您使用的是AppSrc示例,那么有一个相当简单的解决方案,就是将Gst.Buffer分配封装在using语句中

例如,更改以下方法

static void PushAppData (object o, Gst.App.NeedDataArgs args) {
  ulong mseconds = 0;
  if (appsrc.Clock != null)
    mseconds = appsrc.Clock.Time / Clock.MSecond;
  Gst.Buffer buffer = DrawData (mseconds);
  appsrc.PushBuffer (buffer);
}
对此

static void PushAppData (object o, Gst.App.NeedDataArgs args) {
  ulong mseconds = 0;
  if (appsrc.Clock != null)
    mseconds = appsrc.Clock.Time / Clock.MSecond;
  using(Gst.Buffer buffer = DrawData (mseconds))
    appsrc.PushBuffer (buffer);
}
之前对于我的示例,此示例将在中崩溃,请尝试使用

请参见此示例: