Die delete[]
gibt den Speicher frei, der nach der Zerstörung der Objekte zugewiesen wurde (was nichts für char
tut). Es ist nicht wichtig für den Inhalt, d. H. Es werden so viele Objekte freigegeben, wie zugewiesen wurden.
Beachten Sie, dass die Verwendung von strcat()
von einem Nullzeichen abhängig ist, um das Ende der Zeichenfolge zu finden, und dass der von new char[n]
zurückgegebene Speicher nicht initialisiert ist. Sie wollen mit
*charArray = 0;
starten von ... und Sie könnten strncat()
oder, noch besser, nicht verwenden diese überhaupt, sondern verwenden std::string
zu betrachten.
Machen Sie einen Verweis auf charArray [20] und sehen Sie den Wert nach dem Löschen [] – gaussblurinc
Der Aufruf von strcat führt zu Undefined Behavior - danach sind alle Wetten aus. –
Paul R bezieht sich auf die Tatsache, dass es unbekannt ist, wo das erste '\ 0' in dem Speicher ist, auf den' charArray' zeigt, da 'strcat's Funktionalität davon abhängt, das zu finden. – Eric