Fehler beim Programmbeenden ...



  • Hallo zusammen,

    ich habe ein etwas kniffliges Problem, ohne klares Fehlerprofil.

    Und zwar hab ich in eine Klasse folgende static Funktion:

    static std::string trimXYZ()
    {
        return "abc";
    }
    

    Eigentlich macht die Funktion mehr aber ich hab zur Fehlersuche sie soweit reduziert, wobei der Fehler immer noch auftritt.

    Rufe ich die Funktion im Programm irgendwann mal auf, geht alles. Nur beim Beenden des Programms kommt es zu einer Schutzrechtsverletzung. Rufe ich die Funktion nie auf, passiert dies nicht und alles läßt sich problemlos beenden.

    Lasse ich mir von der Funktion anstatt eines strings einen int zurückgeben, kommt es ebenfalls NICHT zur Schutzrechtsverletzung beim Schließen des Programms.

    Ich kann mir das alles nicht erklären und sitze schon so lange an dem Problem, dass mir vielleicht der Blick für die klare Lösung abhanden gekommen ist.

    Wißt ihr da Rat?

    Habt vielen Dank



  • öh, so direkt fällt mir da nichts auf. Aber lass dir mal char const* anstelle std::string zurückgeben und schau mal ob es dann immer noch nicht klappt.



  • Ein vielversprechender Ansatz. Nur leider kommt der Absturz trotzdem ...

    Ist char const* eigentlich das selbe wie const char*?
    Und ist es nicht kritisch, wenn ich mir einen Pointer auf eine lokale Variable zurückgeben lasse?



  • Ich glaube hier hilft nur ein minimales abstürzendes Programm.



  • BartS schrieb:

    Ist char const* eigentlich das selbe wie const char*?

    const char ** = char const != char * const

    Und ist es nicht kritisch, wenn ich mir einen Pointer auf eine lokale Variable zurückgeben lasse?

    Solange sie nicht static ist, ja.

    mfg



  • [cpp]
    "abc" exsestiert nur in der Funktion sie ist sozusagen temporär.D.h. so bald die funktion fertig ausgeführt exsestiert "abc" nicht mehr!!!

    mfg



  • spjoe schrieb:

    "abc" exsestiert nur in der Funktion sie ist sozusagen temporär.D.h. so bald die funktion fertig ausgeführt exsestiert "abc" nicht mehr!!!

    Das mag für Variablen gelten. "abc" ist ein Stringliteral, die halten ein wenig länger. 😉



  • spjoe schrieb:

    [cpp]
    "abc" exsestiert nur in der Funktion sie ist sozusagen temporär.D.h. so bald die funktion fertig ausgeführt exsestiert "abc" nicht mehr!!!

    mfg

    Quatsch



  • sry hab michh vertan
    @MFK thx für aufmerksam machen
    @nicht_wirklich kannst wirklich gut abschreiben

    mfg


Log in to reply