Java/C++ Entwickler hier. Versuchen, C zu lernen, aber ich bin verwirrt mit Speicherzuweisung für Arrays.C - Array erlaubt außerhalb der Grenzen?
Was passiert hier?
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
int main()
{
int az[3];
az[2] = 66;
az[8] = 5214;
printf("%d\n", az[8]);
system("pause");
return 0;
}
Ausgabe
5214
Wie kann das sein? Warum bekomme ich keine Out of Bounds Ausnahme oder einen Programmabsturz? Kann ich das unendlich machen? Wie groß ist die Länge meines Arrays in diesem Fall? Was ist der Sinn des Zuweisens von Speicher über malloc
, wenn meine Arrays es mir erlauben, bereits Werte außerhalb der Grenzen zu setzen? Das macht für mich keinen Sinn.
C beschwert sich nicht außerhalb der Grenzen. So einfach ist das. – icbytes
Verhalten ist 'undefiniert', was genau das bedeutet. Könnte abstürzen. Könnte Müll drucken. Könnte sigsegv. Könnte eine Kopie von Minecraft starten. C/C++ hat keine Leitplanken. – evaitl
FYI Sie können das gleiche in C++ tun; es ist nicht einzigartig für C oder malloc. – qexyn