1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

fehler in xmemory

  • haui
  • 7. Mai 2007 um 21:54
  • Unerledigt
  • haui
    2
    haui
    Mitglied
    Punkte
    30
    Beiträge
    4
    • 7. Mai 2007 um 21:54
    • #1

    Hallo!

    Ich versuche gerade einen torrent client zu schreiben... anfangs wollte ich es eingentlich in c/c++ schreiben um meine kenntnisse etwas aufzufrischen. mittlerweile hat sich aber gezeigt, dass ich da einiges auf mich genommen habe!
    ich habe nun folgendes problem und zwar:

    ich habe ein klasse c_logger. Diese Klasse hat eine methode, welche einfach einen std::string in eine datei schreibt.
    das logging funktioniert auch einwandfrei. bis zu einem gewissen punkt, welcher mir momentan auch nicht reproduzierbar scheint.

    beim aufrufen der log- funktion (welche mit dieser instanz bereits öfters funktioniert hat) erhalte ich eine "Unbehandelte Ausnahme bei 0x7c812a5b"

    und vc++ spring mir in die lib xmemory auf die zeilen

    return ((_Ty _FARQ *)::operator new(_Count * sizeof (_Ty)));

    das problem passiert in meinem source bei

    c_logger::log(char *text){
    log(std::string(text));
    }


    hat da jemand ne idee???
    kann es sein, dass ich irgendwie zu viel speicher verruche? muss ich das std::string wieder freigeben?

    danke für eure Hilfe!

    mfg Haui

  • wobbo
    3
    wobbo
    Mitglied
    Punkte
    75
    Beiträge
    14
    • 7. Mai 2007 um 23:45
    • #2

    wie hast du die variable/pointer 'text' deklariert?

  • haui
    2
    haui
    Mitglied
    Punkte
    30
    Beiträge
    4
    • 8. Mai 2007 um 13:04
    • #3

    naja,

    der pointer text wird der funktion direkt übergeben:

    log.log("logge irgendwas!");

    es ist also keine string, für welchen ich selber den speicher reserviere. demnach sollte der speicher eigentlich nach dem austreten aus der funktion wieder frei sein!?

  • wobbo
    3
    wobbo
    Mitglied
    Punkte
    75
    Beiträge
    14
    • 8. Mai 2007 um 13:09
    • #4

    ah sorry, mein fehler, sollte genauer schauen...

    hast du text ordnungsgemäß terminiert?

  • haui
    2
    haui
    Mitglied
    Punkte
    30
    Beiträge
    4
    • 8. Mai 2007 um 16:59
    • #5

    nix problem, bin ja froh für jede hilfe :winking_face:

    mit dem terminieren sollte es eigentlich kein problem sein, da es bei vorhergehenden aufrufen der funktion einwandfrei läuft...

    wenn ich den entsprechenden funktionsaufruf testweise auskommentieren, hängt sich das programm beim nächsten aufruf der funktion auf! es sollte also an und für sich kein problem der übergebenen daten sein! denk ich!

    so, ich denk ich häng am besten einen codeschnippsel an. hier die log-methode:

    Code
    void c_logger::log(std::string text){
        if((sensitivity==3) || (sensitivity==1) && (allloggerdisabled != true)){
            FILE *file = NULL;
            text.append("\n");
            if(autoappend_time){
                //hier noch weiterzumachen
            }
            file = fopen(logname.c_str(), "a+");
            if(file==NULL){
                outp.outp(logname);
                outp.outp(std::string("Fataler Fehler! Kann die Logfile nicht erstellen"));
            }
            else{
                int bytes;
                bytes = fwrite(text.c_str(), 1, text.length(), file);
                written_log_lines++;
            }
            if(file!=NULL)
                fclose(file);
            file = NULL;
        }
        if((sensitivity==2) ||(sensitivity==3)){
            outp.outp(text);
        }
    
    }
    Alles anzeigen

    wohlbemerkt! ich bin nicht gerade der beste c++ programmierner :winking_face:


    edit:
    hab gerade bemerkt, dass das problem bei malloc zu sein scheint!
    qb irgendeinem bestimmten punkt, reserviert mir malloc keinen speicher mehr! ich check nicht ganz warum, aber es ist rekonstruirbar, sprich es geschieht bei jedem neustart des programmes!

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung