Stimmt, vielen Dank! Wegen dem ++x geh? Wärs x++ oder nicht <= sondern nur < passts...
Aber warum funktioniert es dann in der Debug-Version?
Wie kann ich das selber herausfinden (im Debugger wahrscheinlich), weil für mich war das sehr komisch und nirgends verständlich warum es nicht funktioniert...?
Mich wundert, dass dir im Debug nicht das hier passiert ist:
Heap beschädigung bei Dekonstruktor Aufruf
Wann Windows so ein Problem, wie du es verursacht hast, direkt bemerkt und wann nicht, das ist in der Tat etwas kompliziert. Dabei geht es darum, wie Windows Anwendugnen Speicher zuteilen kann, und das geht in Blöcken von 4kb. Deshalb muss so etwas wie der Crash, den du gesehen hast, nicht unbedingt immer auftreten.
Ein Beispiel:
Du hast ein Array mit der Größe von 10 Bytes, es liegt grad am Ende von einem 4kb Block und dahinter folgt kein weiterer 4kb Block. Du schreibst auf 11. Byte - Windows beendet dein Programm.
Ein weiteres Beispiel:
Du hast wieder ein 10 Byte großes Array, das am Anfang eines 4kb Blocks liegt. Du schreibst auf 11. Byte und Windows kriegt davon nichts mit.