Memory leaks 使用gstbuffer时内存泄漏

Memory leaks 使用gstbuffer时内存泄漏,memory-leaks,gstreamer,free,Memory Leaks,Gstreamer,Free,我有一个管道,它从网络摄像头获取数据并进行处理 对于处理,我需要将该缓冲区拉到appsink,并使用appsrc元素将其推送到管道中 推送时,我使用了gst\u buffer\u new\u wrapped功能 然后,每次推送数据时都会分配一个新的缓冲区。但问题是如何释放内存 我试过gst_buffer_unref(buffer) 然后得到下面的错误 Error in `./uuHiesSoaServer': free(): invalid pointer: 0x00007fddf52f600

我有一个管道,它从网络摄像头获取数据并进行处理

对于处理,我需要将该缓冲区拉到appsink,并使用appsrc元素将其推送到管道中

推送时,我使用了gst\u buffer\u new\u wrapped功能

然后,每次推送数据时都会分配一个新的缓冲区。但问题是如何释放内存

我试过gst_buffer_unref(buffer)

然后得到下面的错误

 Error in `./uuHiesSoaServer': free(): invalid pointer: 0x00007fddf52f6000 
我必须将数据放入一个无符号字符指针中,然后根据大小将其包装到一个gstbuffer中

现在如何释放分配的内存

g_signal_emit_by_name (Source, "push-buffer", Buffer, &ret);
我曾使用上述函数将数据推送到源(appsrc)中

该函数将连续调用一个单独的线程

当数据可用时,线程函数将使用

gst_buffer_new_wrapped((void *)data, Size);
在valgrind中检查内存泄漏时,上面的行显示为泄漏


如何解决这个问题?

如何将缓冲区推入appsrc

如果您使用gst\u app\u src\u push\u buffer函数,我想您不必释放资源,因为它将拥有缓冲区(这意味着它也会释放缓冲区) 检查

如果使用“需要数据回调”,则可能需要释放数据-检查


HTH

@PrasanthKumarArisetti您在我的回答中检查了关于需求数据的第二个示例了吗?他们使用的方法与您完全相同;)@PrasanthKumarArisetti:在使用GStreamer时,我发现在gst的源代码中检查示例总是很好的,有时没有示例,有时有-在检查之前你永远不会知道。。这一个位于gst插件库源代码的tests/examples/app/目录中。。您始终可以在以下位置浏览源: