Christian Seiler: C++ Dynamische Speicherverwaltung

Beitrag lesen

Hallo »Insanity«,

Wenn ich diesen Puffer jetzt allerdings ausgebe bekomme ich zwar die Nachricht aber auch jede Menge Zeichenmüll...
Irgendjemand eine Idee was ich Falsch mache?

Nun ja, normalerweise werden Zeichenketten in C/C++ mit dem Zeichen mit dem ASCII-Code 0 abgeschlossen, so weiß ein C/C++-Programm, wo die Zeichenkette aufhört. Wenn das Zeichen nicht vorhanden ist, dann wird munter im Speicher weitergelesen bis so ein Zeichen auftritt oder das Programm abstürzt. (allgemeine Schutzverletzung)

Sowie ich das sehen kann 3 mögliche Ursachen:

1. Die Funktion, die die Nachricht in die Zeichenkette schreibt das Abschlusszeichen nicht in die Zeichenkette mit hinein. Das müßtest Du dann manuell übernehmen. (pszPuffer[laenge] = '\0'; - aber Achtung: laenge musst Du anderswo herbekommen, denn strlen o.ä. suchen nach dem 0-Byte, dass Du ja erst einfügen willst)
2. Mit pszPuffer = new TCHAR[anzahl_zeichen_in_reihe]; erzeugst Du ja den Puffer. Dieser Puffer ist vielleicht aber auch genau ein Zeichen zu wenig, den müßtest Du genau um eines größer machen - schließlich muss er ja auch das Null-Byte fassen.
3. Beides zusammen.

Christian

P.S.: Eigentlich ist das hier ja ein Webentwicklungsforum. ;-)

--
Hast Du einen Beitrag? Nur her damit!
http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm
SELF-Code: sh:) fo:) ch:] rl:( br:> n4:& ie:% mo:) va:) de:] zu:) fl:( js:| ss:) ls:[