Memory leaks 使用gstbuffer时内存泄漏
我有一个管道,它从网络摄像头获取数据并进行处理 对于处理,我需要将该缓冲区拉到appsink,并使用appsrc元素将其推送到管道中 推送时,我使用了gst\u buffer\u new\u wrapped功能 然后,每次推送数据时都会分配一个新的缓冲区。但问题是如何释放内存 我试过gst_buffer_unref(buffer) 然后得到下面的错误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
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/目录中。。您始终可以在以下位置浏览源: