C und C++ überprüft zur Laufzeit nicht, auf welche Speicherbereiche Sie zugreifen möchten. Sie können auf Speicherzellen außerhalb Ihres Arrays zugreifen, und das wird funktionieren. Wenn Sie auf diese Weise auf Speicher zugreifen, den Sie kennen (Speicher, den der C++ - Standard oder Ihr Compiler Ihnen sagt, wie zugeteilt wird), wird alles gut funktionieren (Sie könnten das sogar absichtlich tun), sonst ist es ein Bug und Ihre Anwendung wird es tun unvorhersehbares Verhalten bekommen.
In Ihrem Fall bedeutet dies, dass a
und b
auf aufeinander folgenden Speicherzellen sind. Wie auch immer, das hängt nur von Ihrem Compiler ab. Ihr Code funktioniert möglicherweise nicht mit anderen Compilern, mit verschiedenen Versionen Ihres Compilers oder sogar mit Ihrem Compiler, wenn Sie andere Kompilierungsoptionen verwenden.
Sie sollten sich nicht auf dieses Verhalten verlassen. –
Meinen Sie, dass das Programm nicht abstürzt? –
Siehe auch: http://stackoverflow.com/questions/671703/array-index-out-of-bound-in-c und http://stackoverflow.com/questions/3658383/accessing-array-beyond-the- Limit –