Memory Leaks trotz sqlite3_free()



  • Hallo

    Ich habe ein Programm geschrieben, was aus einer Datei die IDs ausliest (einlesen der Datei mittel Expat) und dann in eine Datenbank speichert.

    Ich bekomme immer wenn ich Daten in meine Datenbank eintragen will ein ganze Menge Memory Leaks. Ich habe schon sehr viel im Internet geforscht und bin mir eigetnlich sicher, dass ich das Problem richtig gelöst habe. Leider bekomme ich das nicht hin.

    Ich poste jetzt mal nicht den ganzen Code, sondern erstmal meine SQL Anweisung.

    void insert_tableH(int id) {
    
    	//cout << &id << endl;
    
    	char *zSQL = sqlite3_mprintf("INSERT INTO Highways (id) VALUES ('%i')",id);
    
        int err = sqlite3_exec(Database, zSQL, NULL, NULL, &error);
    	sqlite3_free(zSQL);
    
        if( err!=SQLITE_OK ) {
    		cout << "Fehler beim eintragen der daten\n";
            cout << error <<endl;
    		sqlite3_free(error);
            exit(1);
        }
    
    }
    

    Also ich bin mir sehr sicher, dass der Fehler in dieser Methode zu finden ist. Denn wenn ich den Funktionsaufruf auskommentiere bekomme ich keine Leaks mehr.

    2 Dinge wären eventuell noch möglich:
    1: Verursacht das einmalige öffnen der Datenbank vllt die Leaks und ich muss nach jedem eintragen von einem Datensatz die DB wieder schliessen und dann erneut öffnen?
    2: Reicht es aus wenn ich sqlite3_free() einfach so aufrufe oder muss ich vorher noch irgendwelchen Code implementieren? Brauche ich vorher malloc?

    MFG
    MilkToast


Anmelden zum Antworten