Ja, jeder hat den wichtigsten Punkt abgedeckt; Sie sind nicht garantiert zu scheitern. Tatsache ist, dass der Nullterminator in der Regel 0 ist, und 0 ist ein ziemlich häufiger Wert, der an einer bestimmten Speicheradresse sitzt. Es funktioniert also ganz zufällig. Man könnte das testen, indem man einen Speicherbereich nimmt, einen Haufen Müll hineinschreibt und dann den String dorthin schreibt und versucht, damit zu arbeiten.
Wie auch immer, das Hauptproblem, das ich hier sehe, ist, dass Sie über C sprechen, aber Sie haben diese Codezeile:
char* dest = new char[strlen(src)];
Dies lässt sich mit keinem Standard-C-Compiler kompilieren. Es gibt keine new
Schlüsselwort in C. Das ist C++. In C würden Sie eine der Speicherzuweisungsfunktionen verwenden, normalerweise malloc
. Ich weiß, das erscheint pingelig, aber das ist es nicht.