char array löschen mit delete []



  • Hallo,

    ich erzeuge mit new char ein Char-Array, benutze es und anschließend will ich es löschen. Im IDE gibt es eine Exception Fehlermeldung; in der fertigen EXE Datei nicht? 😕

    Integer iLen; AnsiString zText; 
    
    iLen=RTF->GetTextLen();                             // Anzahl Zeichen
    char *bytes=new char[iLen]+1;                       // Char Feld erzeugen (+1 Nullbyte)
    RTF->GetTextBuf(bytes,iLen);                        // und auslesen
    zText=String(bytes);                                // Char in String übergeben
    delete[] bytes;                                     // hier kommt im IDE eine Fehlermeldung?  Oder ist bytes=NULL;  ausreichend?
    

    Danke für jeden Hinweis. Laut Microsoft bzw. googeln müsste es mit delete [] bytes eigentlich gehen (was es in der fertigen EXE ja auch scheinbar macht).

    Gruß Stefan



  • Probier mal so:

    char *bytes=new char[iLen+1];
    


  • Wenn du ´nen std::vector benutzt hast du gar keine Probleme mehr:

    std::vector<char> Buffer( RTF->GetTextLen() +1, 0 );
    RTF->GetTextBuf( &Buffer[0], RTF->GetTextLen() );
    AnsiString zText = &Buffer[0];
    


  • Hallo _matze und DocShoe,

    danke für beide Hinweise 👍 , der dämliche Fehler mit

    [iLen]+1
    

    war es. Ich war so irritiert, weil
    der Fehler nur im IDE war, das ich es einfach nicht gesehen habe.

    Gruß Stefan



  • Stefan71242 schrieb:

    char *bytes=new char[iLen]+1;                       // Char Feld erzeugen (+1 Nullbyte)
    

    Das ist wirklich ein sehr hübscher Fehler 👍


Anmelden zum Antworten