Ein seltsamer Fehler...



  • Hallo,

    Ich habe ca folgendes Problem

    main(){
    .....
    initialisiere ein paar std::stringstreams
    a,b,c
    fülle

    a<<"string1"
    b<<"string2"

    c << a.str() <<"postfix";

    Die Stringbuffer werden gefüllt, danach in char* umgewandelt via
    char * some_sb_array = new char[a.str().length()]
    std::strcpy(some_sb_array,a.str().c_str())

    diese char* werden dann als mainargumente(argv[n]) einer funktion übergeben
    function(argc,argv)

    } das problem tritt bei einem der stringbuffer auf, dessen initialisierung , befüllung und umwandlung exakt genauso abläuft wie die der anderen..
    -> wenn ich diesen sb ausklammere, läuft alles normal, bzw wenn ich aus ihm eine kopie eines anderen problemlosen SB mache gehts auch..
    Mich hat das stutzig gestimmt, deswegen hab ich die argv arrays händisch aufgefüllt z.B
    argv[0] ="erstes argument",
    und siehe da, obwohl der SB nicht übergeben wird, tritt trotzdem ein unerwarteter progarmmabsturz ein..

    Ich bin leider komplett überfragt wo dieser Fehler zu finden ist, weil er für mich komplett unlogisch klingt - aber vielleicht weiß einer von euch mehr?

    Leider kann ich keinen Code beilegen, da das nur ein kleiner Teil aus einem Framework ist..

    Hoffe ihr könnt mir helfen!

    Lg
    M



  • mazzok schrieb:

    Ich habe ca folgendes Problem

    [...]
    [ weder Problembeschreibung noch für sich selbst sprechender kombilierbarer Code, nicht mal in cpp-Tags ]
    [...]

    [...]
    das problem [...]

    Wir erfahren bis Postende nicht, was für ein Problem.

    mazzok schrieb:

    [...] tritt bei einem der stringbuffer auf, dessen initialisierung , befüllung und umwandlung exakt genauso abläuft wie die der anderen..

    Wie das abläuft wissen wir nicht, denn Du sagst es uns nicht.

    mazzok schrieb:

    Leider kann ich keinen Code beilegen, da das nur ein kleiner Teil aus einem Framework ist..

    Aha. Dann Reduziere den Code soweit, bis du entweder selbst auf die Lösung kommst oder irgendwann ein kompiliebares Beispiel übrigbleibt, das das "fehlerhafte" Verhalten noch zeigt.

    Ergänzend lies vielleicht Smart Questions.



  • some_sb_array hat ein Byte zu wenig Speicherplatz (Nullterminator).


Log in to reply