char array, merkwürdiges abstürzen
-
Folgendes Beispiel:
#include <iostream> #include <cstring> using namespace std; int main() { char var1[20]; strcpy(var1,"abcddddddddddddddddddddddddddddddddddddddddd"); //44 hängt sich auf //45 OS Error return 0; }müsste doch ab "Buchstaben in var1" > "19" abstürzen oder? Aber es hängt sich erst ab 44 Buchstaben auf, also schwarze Konsole in der sich nichts mehr bewegt, und ab 45 Buchstaben gibts dann einen Speicherverletzungserror vom OS.
Kann mir das jemand erklären warum das erst so spät kommt, und warum hängt er sich bei 44 Buchtsbane auf, und ab 45 kommt immer ein Error vom OS?
MfG
Stromberg
-
Es kommt drauf an, was im Memory nach dem reservierten block kommt.
(verhalten undefiniert, heisst, kann sein dass dein programm abstürtzt aber auch sonst irgendwas.).Zudem bauen die meisten Debugger spezielle patterns ein (markieren das Memory) um genau solche fehler zu entdecken.
simon
-
Stromberg schrieb:
...
müsste doch ab "Buchstaben in var1" > "19" abstürzen oder? ...Versuchst Du hier tatsächlich "undefiniertes Verhalten zu definieren" ?

Gruß,
Simon2.