Ich hatte eine Frage.
Ich entwickle Server in ASIO und Pakete sind in spitzen Char.
Wenn ich ein neues Zeichen erzeuge (zB char * buffer = new char[128];
) muss ich es manuell auf Null setzen.
Von:
%Vor%Ich mache etwas falsch, das Char ist nicht klar?
Sie müssen kein Array nicht initialisierter Werte durchlaufen. Sie können ein Array von Nullen wie folgt dynamisch instantiieren:
%Vor%Es gibt zwei Möglichkeiten, den neuen Operator in C ++ aufzurufen - standardmäßig initialisiert und null initialisiert.
Zur Standardinitialisierung (bei der der Wert nicht definiert ist) rufen Sie
auf %Vor%Es ist dann undefined behavoir, diesen Wert zu lesen oder zu verwenden, bis er gesetzt wurde.
Um auf Null zu initialisieren (was auf 0 gesetzt wird), benutzen Sie:
%Vor%Dies funktioniert auch mit Arrays:
%Vor%Es gibt weitere Informationen hier
Sie können auch Calloc verwenden. Es initialisiert jedes Element automatisch auf 0. z.B.:
%Vor%Erster Parameter ist die Anzahl der zuzuweisenden Blöcke. Zweitens ist die Größe des Blocks. Diese Funktion gibt void * zurück, also müssen Sie ihren Wert in (char *) umwandeln Wenn Sie Calloc (oder malloc oder irgendwelche "reinen c" Zuordnungsfunktionen) verwenden, sollten Sie besser free Funktion zum Freigeben von Speicher statt Löschen.