ウェブカメラからデータを取り込んで処理するパイプラインがあります。 iはappsinkにそのバッファを引くとappsrc要素を使用してパイプラインにそれをプッシュする必要がある処理についてgstbufferの使用中にメモリリークが発生する
。
私は押しているうちにgst_buffer_new_wrappedの機能を使用していました。
次に、データをプッシュするたびに新しいバッファが割り当てられます。しかし、その記憶を解放する方法が問題です。
私はgst_buffer_unref(バッファ)を試みました。
次に、以下のエラーが発生しました。
Error in `./uuHiesSoaServer': free(): invalid pointer: 0x00007fddf52f6000
私はデータを符号なしのcharポインタに入れてから、そのサイズに基づいてgstbufferにラップしました。
割り当てられたメモリを解放するにはどうすればいいですか?
g_signal_emit_by_name (Source, "push-buffer", Buffer, &ret);
上記の関数をソース(appsrc)にプッシュするために使用しました。
この関数は、別のスレッドで継続的に呼び出します。
それに利用可能なデータは、その後、スレッド関数が
gst_buffer_new_wrapped((void *)data, Size);
を使用してバッファを作成するvalgrindのチェックイン時と、メモリリークのために、上記の行が漏れとして示されました。
これを解決するにはどうすればよいですか?
チェック一度質問をチェックし、私はそれ –
@PrasanthKumarArisetti更新しますか?彼らはあなたとまったく同じ方法を使用している;) – nayana
ありがとう。今は正常に動作します。 –