Ich habe eine Pipeline, die Daten von der Webcam aufnimmt und verarbeitet.Speicherlecks während der Verwendung von gstbuffer
Für die Verarbeitung Ich brauche diesen Puffer zu appsink zu ziehen und schieben es in die Rohrleitung durch appsrc Element verwendet.
Während ich drängte hatte ich gst_buffer_new_wrapped Funktion verwendet.
Dann wird ein neuer Puffer jedes Mal zugewiesen, wenn ich die Daten schiebe. Aber wie man diese Erinnerung befreit, ist das Problem.
Ich hatte versucht gst_buffer_unref (Puffer);
Dann unten Fehler erhalten.
Error in `./uuHiesSoaServer': free(): invalid pointer: 0x00007fddf52f6000
Ich hatte die Daten in einem unsigned char-Zeiger und dann in einem gstbuffer basierend auf der Größe gewickelt.
Jetzt, wie man den zugeteilten Speicher freigibt?
Ich hatte obige Funktion verwendet, um Daten in Source (appsrc) zu schieben.
Diese Funktion ruft ständig einen separaten Thread auf.
Wenn Daten, die ihm zur Verfügung, dann wird der Thread-Funktion unter Verwendung eines Puffers
gst_buffer_new_wrapped((void *)data, Size);
Bei der Überprüfung in valgrind, für Speicherverluste erzeugen, oberhalb der Linie als Leck gezeigt wurde.
Wie löst man das?
Prüfung der Frage einmal, ich aktualisiere es –
@PrasanthKumarArisetti haben Sie das zweite Beispiel über Bedarf-Daten in meiner Antwort überprüft? sie benutzen genau die selbe methode wie du;) – nayana
danke dafür. jetzt funktioniert es gut. –