Ich frage mich, warum meine Zuweisung funktioniert. Ich habe ptr
erstellt, das ist ein Zeiger und ptr2
mit einem Zeiger auf dem gleichen Standort als ptr
.malloc berührt nicht zugeordneten Speicher
Hier ist mein Code:
int* ptr = malloc(sizeof(int));
int* ptr2 = ptr;
*ptr2 = 1;
ptr2 = ptr+1;
*ptr2 = 2;
Am Ende habe ich eine Reihe von zwei Integer haben wie folgt aus:
ptr[0] = 1
ptr[1] = 2
Meine Frage ist: Warum kann ich den Wert 2-ptr2
beeinflussen, ohne Fehler oder Warnungen? Ich nur malloc()
-ed für eine ganze Zahl in meinem Array, nicht wahr?
Undefiniertes Verhalten ist * undefined *. – EOF
Mögliches Duplikat von [Kein Fehler außerhalb der Grenzen] (http://stackoverflow.com/questions/9137157/no-out-of-bounds-error) – EOF
Mögliches Duplikat von [Greift auf ein globales Array außerhalb seines gebundenen undefinierten Verhaltens zu? ] (http://stackoverflow.com/questions/26426910/is-accessing-a-global-array-outside-its-bound-undefined-behavior) –