Ich habe mehrere C-Dateien erstellt, mit H-Dateien verbunden und danach auf Speicherlecks überprüft. Wichtig zu erwähnen ist dabei, das ich das ganze mit gkt und glade gemacht habe. Nun habe ich velgrind verwendet, um zu schauen, ob ich evt Speicherlecks habe. Als Ergebnis bekam ich, das keine Speicherlecks gefunden wurden. Um das nochmal zu überprüfen habe ich auch fsanitize benutzt, wobei Speicherlecks von 85.000 Bytes herauskamen.
Jetzt ist meine Frage dazu, wie das sein kann. An sich habe ich immer free benutzt, wenn ich Speicher belegt habe (etwa mit malloc oder strdup) und um den Speicher der gtk_widgets sollte sich eigentlich glade kümmern (soweit ich das richtig gelesen habe). Ich habe auch am Ende meines Codes, nach gtk_main(); noch g_object_unref(builder); angegeben, um den speicher, den der builder belegt freizugeben.
Ich habe mir jetzt schonmal Gedanken dazu gemacht. In meinem Kopf würde es Sinn machen, das fsanitize den nicht erkennt, wenn Gtk den Speicher freigibt und deswegen so viele Lecks findet. Jedoch habe ich auch gelesen, das fsanitize eigentlich präziser als velgrind ist. Jetzt bin ich natürlich verwirrt und würde mich über eine Expertenmeinung freuen.
Anbei vielleicht noch: es ist eher ein kleines programm, welches nur materialen (aus einer txt-Datei) in ein gtk_tree_view einfügt, wo man nach einer Artikelnummer suche kann, einen Eintrag löschen kann und auch einen neuen erstellen kann. Deswegen kann ich mir auch schonmal gar nicht vorstellen, das 85.000Bytes als Speicheleck erkannt werden können.
Ich freue mich über jede Hilfe :)