Warum funktioniert das !?
-
Hallo,
warum funktioniert das:
#include <stdio.h> #include <stdlib.h> struct s_test { int a; int b; }; int main () { struct s_test *test = calloc(0, sizeof(struct s_test)); test[0].a = 273; test[0].b = 734; test[1].a = 364; test[1].b = 838; test[2].a = 313; test[2].b = 947; /* ... */ printf("%i, %i\n%i, %i\n%i, %i\n", test[0].a, test[0].b, test[1].a, test[1].b, test[2].a, test[2].b); printf("%i\n", (int) sizeof(test[652])); return 0; }
Ich hab doch oben (bei calloc) klar und deutlich 0 hingeschrieben. Also sollte kein Speicher reserviert werden. Ich kann aber ohne Probleme test als Array anzusprechen, egal wo (egal welcher Index). Wenn ich jedoch eine Zahl größer 0 angebe und außerhalb des gültigen Bereichs auf das Array zugreifen will, gibt das logischerweise einen Fehler, aber sonst nicht. Aber WARUM !?
Danke im Voraus
cheeseburgerohnekaese
-
Undefiniertes Verhalten ist vom Verhalten her undefiniert.
-
Ok .. gibts hier nicht irgendwo einen Danke-Button !?
-
Sind wir hier bei Facebook?
-
knivil schrieb:
Sind wir hier bei Facebook?