Stefan Hundhammer schrieb:
On Thursday 04 September 2003 15:47, dfroehling wrote:
Im gdb (der liegt ja meist unter dem DDD) wird der Speicher etwas anders verwaltet als im real life. Da kann dann ein Zeiger auf char, der irgendwohin zeigt, durchaus auf etwas halbwegs vernünftiges zeigen, das dann auch noch o-terminiert ist. -> Kein Speicherzugriffsfehler
Das meinte ich mit "Zufall". ;-)
Ist aber reproduzierbar blöderweise. ;-) Wehe man (oder externe Ereignisse) füllen mal wieder einen String bis zum letzten Byte auf, und man verläßt sich an anderer Stelle drauf, daß man vorher alle Bytes auf 0 gesetzt hat (also eigentlich eine 0-Terminierung hat). Deswegen sind mir Char-Arrays oder Char-Pointer die auf Speicherbereiche mit geradzahliger Länge gehen, immer suspekt. Es ist zwar keine Garantie, daß man das Vollaufen korrekt abfängt, wenn man n+1 statt normalerweise n Bytes reserviert, aber es zeigt, daß der Programmierer zumindest tlw. mitgedacht hat. Deswegen hatte mein Array auch 51 und nicht 50 Elemente; auch wenn ich die Länge nicht abgeprüft habe. Wie auch immer; es ist müßig über Code zu diskutieren, der aus dem Zusammenhang gerissen ist. Wenn er's in einem String haben will, dann soll er es auch so bekommen. CU